Erros de JS Magento 2


11

Eu tenho tentado terminar algo e publicá-lo on-line este fim de semana inteiro, é um pouco quebrado e eu não tenho idéia do porquê, então espero que alguém possa me ajudar.

Tentei adicionar jQuery personalizado ao meu tema personalizado, com êxito, pois o jQuery foi carregado e a função estava funcionando. Contudo! Não estava funcionando corretamente. Por exemplo, o Safari não carregava o jQuery e eu continuava recebendo esses erros no meu console:

defaultCaptcha.js: 29 TypeError não capturado: Não é possível ler a propriedade 'captcha' de undefined authentication-popup.js: 26 TypeError não capturado: Não é possível ler a propriedade 'preenchimento automático' de undefined (função anônima)

Eu pensei que tinha algo a ver com a maneira como declarei meu jQuery, mas quando esse não parecia ser o caso, decidi remover todos os meus JS personalizados e ainda assim recebi esses erros. Algo parece estar quebrado mais adiante, eu acho.

Meu 'Tema' personalizado é apenas uma página de destino simples, com nada mais do que uma caixa de assinatura personalizada.

O que poderia causar esses erros?


3
Para futuras Googlers, este é um problema conhecido e sendo monitorado no GitHub github.com/magento/magento2/issues/8532
tim.baker

Respostas:


15

Substitua no módulo do cliente no arquivo authentication-popup.js:

autocomplete: window.checkout.autocomplete

com:

autocomplete: ((window.checkout && window.checkout.autocomplete) ? window.checkout.autocomplete : null),

Execução uma vez atualizada

configuração do bin php / magento: static-content: deploy


Atualizar

O problema pode ser corrigido nas versões mais recentes: https://github.com/magento/magento2/blob/2.3-develop/app/code/Magento/Customer/view/frontend/web/js/view/authentication-popup.js # L23

autocomplete: window.checkout.autocomplete,

foi substituído por:

autocomplete: window.authenticationPopup.autocomplete,

Esta atualização é informativa e não fornece a solução completa, pois as versões mais recentes do Magento 2 vêm com outras alterações.

Aqui está o commit que mudou para isso: https://github.com/magento/magento2/commit/362f62f3c9b6c2994070615d82efbdf19f15fe50


Tentamos essa solução e ainda vemos o erro presente, mesmo após executar os comandos setup: upgrade, di: compile, static-content: deploy, cache: clean e cache: flush. Alguma outra sugestão?
codestr

Deve ir embora. Veja se a alteração está no navegador no arquivo authentication-popup.js (problema de cache do navegador). Verifique também se este arquivo não foi substituído por outro arquivo de uma extensão, veja mais exatamente se o erro está vindo do arquivo JS especificado ou de outro.
Obscuro

O rastreamento de pilha aponta de volta para o arquivo authentication-popup.js e não há extensões / módulos substituindo-o que eu possa encontrar. Também pensei que talvez fosse um problema de cache, mas também não tive sorte. Eu tenho certeza que provavelmente é algo simples que eu estou ignorando, eu vou descobrir isso eventualmente lol.
Codec 7/12

Eu tentei esta solução, o erro desapareceu, mas em geral não sei como corrigir, deixo no fornecedor (com um comentário de todo) até a próxima atualização da versão magento? Alguém tem uma recomendação ?
medmek

1
@medmek Você pode criar um patch git / diff como uma correção nos arquivos principais. O Magento enterprise usa-o aqui: devdocs.magento.com/guides/v2.2/cloud/project/…
obscuro

1

Após a substituição dos arquivos do núcleo, você deve limpar o cache de arquivos estáticos (mesmo que todos os caches estejam desativados no modo padrão) para ver o efeito. Nunca edite arquivos pub / static / frontend porque são arquivos gerados.


0

Parece que o erro está sendo causado pela referência ao preenchimento automático e o captcha não existe quando deveria. Fazendo o que obscuro removeu o erro do preenchimento automático. Eu tive que editar o arquivo captcha padrão em ... / pub / static / frontend / Magento / luma / pt_BR / Magento_Captcha / js / view / checkout / defaultCaptcha.js

para retornar null se a configuração à qual ele tenta se referir não existir. No entanto, isso remove apenas o erro, mas a página de check-out ainda está em branco.

Eu suspeito que isso possa ter a ver com o tema não voltar a cair adequadamente.

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.