JS-Fehler Magento 2

11

Ich habe versucht, etwas zu beenden und es das ganze Wochenende online zu veröffentlichen. Es ist etwas kaputt und ich habe keine Ahnung warum. Ich hoffe, jemand kann mir helfen.

Ich habe versucht, benutzerdefiniertes jQuery zu meinem benutzerdefinierten Design hinzuzufügen, mit Erfolg, da jQuery geladen wurde und die Funktion funktionierte. Jedoch! Es funktionierte nicht richtig. Zum Beispiel würde Safari die jQuery nicht laden und ich habe immer wieder folgende Fehler in meiner Konsole erhalten:

defaultCaptcha.js: 29 Nicht erfasster TypeError: Eigenschaft 'captcha' von undefined authentication-popup kann nicht gelesen werden.js: 26 Nicht erfasster TypeError: Eigenschaft 'autocomplete' von undefined (anonyme Funktion) kann nicht gelesen werden

Ich dachte, es hätte etwas mit der Art und Weise zu tun, wie ich meine jQuery deklariert habe, aber als dies nicht der Fall zu sein schien, entschied ich mich, alle meine benutzerdefinierten JS zu entfernen, und ich bekam immer noch diese Fehler. Etwas scheint weiter oben kaputt zu sein, denke ich.

Mein benutzerdefiniertes "Thema" ist nur eine einfache Zielseite mit nichts anderem als einer benutzerdefinierten Abonnementbox.

Was könnte diese Fehler verursachen?

Magin
quelle
3
Für zukünftige Googler ist dies ein bekanntes Problem und wird in GitHub github.com/magento/magento2/issues/8532
tim.baker

Antworten:

15

Ersetzen Sie im Kundenmodul in der Datei authentication-popup.js:

autocomplete: window.checkout.autocomplete

mit:

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

Einmal aktualisiert laufen

PHP Bin / Magento Setup: Statischer Inhalt: Bereitstellen


Aktualisieren

Das Problem kann in neueren Versionen behoben werden: 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,

wurde ersetzt durch:

autocomplete: window.authenticationPopup.autocomplete,

Dieses Update ist informativ und bietet nicht die vollständige Lösung, da neuere Magento 2-Versionen andere Änderungen enthalten.

Hier ist das Commit, das sich in dieses geändert hat: https://github.com/magento/magento2/commit/362f62f3c9b6c2994070615d82efbdf19f15fe50

obskur
quelle
Wir haben diese Lösung ausprobiert und sehen den Fehler auch nach dem Ausführen der Befehle setup: upgrade, di: compile, static-content: deploy, cache: clean und cache: flush. Irgendwelche anderen Vorschläge?
Codestr
Es sollte weggehen. Überprüfen Sie in der Datei authentication-popup.js (Browser-Cache-Problem), ob sich die Änderung im Browser befindet. Überprüfen Sie auch, ob diese Datei nicht von einer anderen Datei einer Erweiterung überschrieben wird. Überprüfen Sie genauer, ob der Fehler von der angegebenen oder einer anderen JS-Datei stammt.
obskure
Die Stapelverfolgung verweist zurück auf die Datei authentication-popup.js, und es gibt keine Erweiterungen / Module, die sie überschreiben, die ich finden kann. Ich dachte auch, dass es vielleicht ein Cache-Problem ist, hatte dort aber auch kein Glück. Ich bin sicher, es ist wahrscheinlich etwas Einfaches, das ich übersehen habe. Ich werde es irgendwann herausfinden, lol.
Codestr
Ich habe diese Lösung ausprobiert, der Fehler ist verschwunden, aber ich weiß im Allgemeinen nicht, wie ich patchen soll. Lasse ich sie bis zu unserem nächsten Magento-Versions-Update beim Hersteller (mit einem ToDo-Kommentar)? Hat jemand eine Empfehlung?
Medmek
1
@medmek Sie können einen Git / Diff-Patch als Fix für Kerndateien erstellen. Magento Enterprise verwendet es hier: devdocs.magento.com/guides/v2.2/cloud/project/…
obskurer
1

Nach dem Überschreiben von Dateien aus dem Core müssen Sie den Cache für statische Dateien bereinigen (auch wenn alle Caches für den Standardmodus deaktiviert sind), um den Effekt zu sehen. Bearbeiten Sie niemals Pub / Static / Frontend-Dateien, da es sich um generierte Dateien handelt.

user3127632
quelle
0

Es sieht so aus, als würde der Fehler durch den Verweis auf die automatische Vervollständigung verursacht, und Captcha ist nicht vorhanden, wenn dies beabsichtigt ist. Wenn Sie das tun, was dunkel ist, wurde der Fehler für die automatische Vervollständigung behoben. Ich musste die Standard-Captcha-Datei unter ... / pub / static / frontend / Magento / luma / de_DE / Magento_Captcha / js / view / checkout / defaultCaptcha.js bearbeiten

um null zurückzugeben, wenn die Konfiguration, auf die verwiesen wird, nicht vorhanden ist. Dadurch wird jedoch nur der Fehler behoben, die Checkout-Seite bleibt jedoch leer.

Ich vermute, es könnte damit zu tun haben, dass das Thema nicht richtig zurückfällt.

frostshoxx
quelle