Erreurs JS Magento 2

11

J'ai essayé de terminer quelque chose et de le publier en ligne tout le week-end, c'est un peu cassé et je ne sais pas pourquoi donc j'espère que quelqu'un pourra m'aider.

J'ai essayé d'ajouter jQuery personnalisé dans mon thème personnalisé, avec succès car jQuery a été chargé et la fonction fonctionnait. Pourtant! Cela ne fonctionnait pas correctement. Par exemple, Safari ne chargerait pas le jQuery et j'ai continué à obtenir ces erreurs dans ma console:

defaultCaptcha.js: 29 UnCaught TypeError: Impossible de lire la propriété 'captcha' de l'authentification-popup.js non définie: 26 Uncaught TypeError: Impossible de lire la propriété 'autocomplete' d'undefined (fonction anonyme)

Je pensais que cela avait quelque chose à voir avec la façon dont j'ai déclaré mon jQuery, mais quand cela ne semblait pas être le cas, j'ai décidé de supprimer tous mes JS personnalisés, et j'ai quand même eu ces erreurs. Quelque chose semble être encore plus cassé, je suppose.

Mon «thème» personnalisé n'est qu'une simple page de destination avec rien de plus que ma boîte d'abonnement personnalisée.

Qu'est-ce qui pourrait provoquer ces erreurs ??

magin
la source
3
Pour les futurs Googlers, il s'agit d'un problème connu qui est suivi dans GitHub github.com/magento/magento2/issues/8532
tim.baker

Réponses:

15

Remplacez dans le module client dans le fichier authentication-popup.js:

autocomplete: window.checkout.autocomplete

avec:

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

Une fois la mise à jour exécutée

configuration de php bin / magento: contenu statique: déployer


Mise à jour

Le problème peut être résolu dans les versions plus récentes: 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,

a été remplacé par:

autocomplete: window.authenticationPopup.autocomplete,

Cette mise à jour est informative et ne fournit pas la solution complète car les nouvelles versions de Magento 2 sont livrées avec d'autres modifications.

Voici le commit qui a changé en ceci: https://github.com/magento/magento2/commit/362f62f3c9b6c2994070615d82efbdf19f15fe50

obscur
la source
Nous avons essayé cette solution et nous voyons toujours l'erreur présente, même après avoir exécuté les commandes setup: upgrade, di: compile, static-content: deploy, cache: clean et cache: flush. D'autres suggestions?
codestr
Cela devrait disparaître. Vérifiez si le changement se fait dans le navigateur dans le fichier authentication-popup.js (problème de cache du navigateur). Vérifiez également si ce fichier n'est pas remplacé par un autre fichier d'une extension, voyez plus exactement si l'erreur provient du fichier JS spécifié ou d'un autre.
obscur
La trace de la pile renvoie au fichier authentication-popup.js, et il n'y a aucune extension / module le remplaçant que je puisse trouver. J'ai aussi pensé que c'était peut-être un problème de cache, mais je n'ai pas eu de chance non plus. Je suis sûr que c'est probablement quelque chose de simple que j'oublie, je le découvrirai finalement lol.
codestr
J'ai essayé cette solution, l'erreur a disparu, mais je ne sais pas comment corriger, en général, dois-je la laisser au fournisseur (avec un commentaire) jusqu'à notre prochaine mise à jour de la version de Magento? Quelqu'un at-il une recommandation?
medmek
1
@medmek Vous pouvez créer un patch git / diff comme correctif sur les fichiers core. L'entreprise Magento l'utilise ici: devdocs.magento.com/guides/v2.2/cloud/project/…
obscur
1

Après les fichiers de remplacement du noyau, vous devez nettoyer le cache des fichiers statiques (même si tous les caches sont désactivés pour le mode par défaut) afin de voir l'effet. Ne modifiez jamais les fichiers pub / statiques / frontaux car ce sont des fichiers générés.

user3127632
la source
0

Il semble que l'erreur soit causée par la référence à la saisie semi-automatique et le captcha n'existe pas quand ils sont censés le faire. Faire ce qui est obscur a supprimé l'erreur de saisie semi-automatique. J'ai dû modifier le fichier captcha par défaut sur ... / pub / static / frontend / Magento / luma / en_US / Magento_Captcha / js / view / checkout / defaultCaptcha.js

pour retourner null si la configuration à laquelle il essaie de faire référence n'existe pas. Cependant, cela supprime uniquement l'erreur, mais la page de paiement est toujours vierge.

Je soupçonne que cela pourrait avoir à voir avec le thème qui ne retombe pas correctement.

frostshoxx
la source