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?


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


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.


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.

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.