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?
Odpowiedzi:
Zamień w module klienta w pliku authentication-popup.js:
z:
Po aktualizacji uruchom
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
został zastąpiony przez:
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
źródło
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.
źródło
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.
źródło