Błędy JS Magento 2

11

Próbowałem coś skończyć i opublikować online przez cały weekend, to trochę jak zepsute i nie mam pojęcia, dlaczego, więc mam nadzieję, że ktoś może mi pomóc.

Próbowałem dodać niestandardową aplikację jQuery do mojego niestandardowego motywu, ale z powodzeniem, ponieważ aplikacja jQuery została załadowana i funkcja działała. Jednak! To nie działało poprawnie. Na przykład Safari nie ładuje jQuery i ciągle otrzymuję te błędy w mojej konsoli:

defaultCaptcha.js: 29 Uncaught TypeError: Nie można odczytać właściwości „captcha” niezdefiniowanego uwierzytelniania-pop.js: 26 Uncaught TypeError: Nie można odczytać właściwości „autouzupełniania” niezdefiniowanej (funkcja anonimowa)

Myślałem, że ma to coś wspólnego ze sposobem, w jaki zadeklarowałem moje jQuery, ale kiedy tak się nie stało, zdecydowałem się usunąć wszystkie moje niestandardowe JS i nadal mam te błędy. Wydaje mi się, że coś się zepsuło.

Mój niestandardowy „motyw” to po prostu prosta strona docelowa z niczym więcej niż niestandardowym polem subskrypcji.

Co może powodować te błędy?

magin
źródło
3
Dla przyszłych Googlersów jest to znany problem, który jest śledzony na GitHub github.com/magento/magento2/issues/8532
tim.baker

Odpowiedzi:

15

Zamień w module klienta w pliku authentication-popup.js:

autocomplete: window.checkout.autocomplete

z:

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

Po aktualizacji uruchom

konfiguracja php bin / magento: zawartość statyczna: wdrożenie


Aktualizacja

Problem można rozwiązać w nowszych wersjach: 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,

został zastąpiony przez:

autocomplete: window.authenticationPopup.autocomplete,

Ta aktualizacja ma charakter informacyjny i nie zapewnia kompletnego rozwiązania, ponieważ nowsze wersje Magento 2 zawierają inne zmiany.

Oto zatwierdzenie, które zmieniło się w to: https://github.com/magento/magento2/commit/362f62f3c9b6c2994070615d82efbdf19f15fe50

niejasny
źródło
Wypróbowaliśmy to rozwiązanie i nadal pojawia się błąd, nawet po uruchomieniu komend setup: upgrade, di: compile, static-content: deploy, cache: clean i cache: flush. Jakieś inne sugestie?
codestr
Powinno odejść. Sprawdź, czy zmiana dotyczy przeglądarki w pliku authentication-popup.js (problem z pamięcią podręczną przeglądarki). Sprawdź także, czy ten plik nie jest zastępowany innym plikiem z rozszerzenia, a dokładniej sprawdź, czy błąd pochodzi z określonego pliku JS, czy innego.
niejasne
Ślad stosu wskazuje z powrotem na plik uwierzytelniania-popup.js i nie ma żadnych rozszerzeń / modułów nadpisujących go, które mogę znaleźć. Pomyślałem też, że to może być problem z pamięcią podręczną, ale nie miałem też szczęścia. Jestem pewien, że przeoczyłem coś prostego, w końcu się zorientuję, lol.
codestr
Próbowałem tego rozwiązania, błąd zniknął, ale ogólnie nie wiem, jak łatać, czy zostawiam go dostawcy (z komentarzem do zrobienia), aż do następnej aktualizacji wersji Magento? czy ktoś ma zalecenie?
medmek
1
@medmek Możesz utworzyć łatkę git / diff jako poprawkę do podstawowych plików. Magento Enterprise używa go tutaj: devdocs.magento.com/guides/v2.2/cloud/project/…
niejasne
1

Po zastąpieniu plików z rdzenia musisz wyczyścić pamięć podręczną plików statycznych (nawet jeśli wszystkie pamięci podręczne są wyłączone w trybie domyślnym), aby zobaczyć efekt. Nigdy nie edytuj plików pub / static / frontend, ponieważ są one generowane.

użytkownik3127632
źródło
0

Wygląda na to, że błąd jest spowodowany przez odwołanie do autouzupełniania, a captcha nie istnieje, kiedy powinny. Wykonanie tego, co niejasne, usunęło błąd autouzupełniania. Musiałem edytować domyślny plik captcha na ... / pub / static / frontend / Magento / luma / en_US / Magento_Captcha / js / view / Checkout / defaultCaptcha.js

zwracać null, jeśli konfiguracja, do której próbuje się odwoływać, nie istnieje. Jednak to usuwa tylko błąd, ale strona kasy jest nadal pusta.

Podejrzewam, że może to mieć związek z tym, że motyw nie wróci poprawnie.

frostshoxx
źródło