Errori JS Magento 2


11

Ho cercato di finire qualcosa e pubblicarlo online per tutto il weekend, è un po 'rotto e non ho idea del perché, quindi spero che qualcuno mi possa aiutare.

Ho provato ad aggiungere jQuery personalizzato al mio tema personalizzato, con successo poiché jQuery è stato caricato e la funzione funzionava. Tuttavia! Non funzionava correttamente. Ad esempio, Safari non caricava jQuery e continuavo a ricevere questi errori nella mia console:

defaultCaptcha.js: 29 TypeError non rilevato: impossibile leggere la proprietà 'captcha' di autenticazione non definita-popup.js: 26 TypeError non rilevato: impossibile leggere la proprietà 'completamento automatico' di undefined (funzione anonima)

Ho pensato che avesse qualcosa a che fare con il modo in cui ho dichiarato il mio jQuery, ma quando ciò non sembrava essere il caso ho deciso di rimuovere tutto il mio JS personalizzato e ho ancora questi errori. Qualcosa sembra essere rotto più in alto, immagino.

Il mio "Tema" personalizzato è solo una semplice pagina di destinazione con nient'altro che una casella di abbonamento personalizzata.

Cosa potrebbe causare questi errori ??


3
Per i futuri googler, questo è un problema noto e viene tracciato in GitHub github.com/magento/magento2/issues/8532
— tim.baker

Risposte:


15

Sostituisci nel modulo cliente nel file authentication-popup.js:

autocomplete: window.checkout.autocomplete

con:

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

Una volta aggiornato esegui

php bin / magento setup: static-content: deploy


Aggiornare

Il problema può essere risolto nelle versioni più recenti: 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,

è stato sostituito con:

autocomplete: window.authenticationPopup.autocomplete,

Questo aggiornamento è informativo e non fornisce la soluzione completa poiché le versioni più recenti di Magento 2 vengono fornite con altre modifiche.

Ecco il commit che è cambiato in questo: https://github.com/magento/magento2/commit/362f62f3c9b6c2994070615d82efbdf19f15fe50


Abbiamo provato questa soluzione e vediamo ancora l'errore presente, anche dopo aver eseguito l'installazione: upgrade, di: compilazione, contenuto statico: deploy, cache: clean e cache: flush. Altri suggerimenti?
— codestr

Dovrebbe andare via. Verifica se la modifica è nel browser nel file authentication-popup.js (problema di cache del browser). Vedi anche se questo file non viene sovrascritto da un altro file da un'estensione, più esattamente vedi se l'errore proviene dal file JS specificato o da un altro.
— oscuro

La traccia dello stack fa riferimento al file authentication-popup.js e non ci sono estensioni / moduli che lo sovrascrivono che riesco a trovare. Ho anche pensato che forse fosse un problema di cache, ma non ho avuto fortuna neanche lì. Sono sicuro che probabilmente sto trascurando qualcosa di semplice, alla fine lo scoprirò.
— codestr

Ho provato questa soluzione l'errore è scomparso, ma non so in generale come patchare, lo lascio nel fornitore (con un commento todo) fino al prossimo aggiornamento della versione di Magento? Qualcuno ha una raccomandazione ?
— medmek,

1
@medmek È possibile creare una patch git / diff come correzione su file core. Magento enterprise lo utilizza qui: devdocs.magento.com/guides/v2.2/cloud/project/…
— oscuro

1

Dopo aver sovrascritto i file dal core, è necessario pulire la cache dei file statici (anche se tutte le cache sono disabilitate per la modalità predefinita) per vedere l'effetto. Non modificare mai i file pub / static / frontend perché sono file generati.


0

Sembra che l'errore sia causato dal riferimento al completamento automatico e captcha non esistano quando dovrebbero. Facendo ciò che oscuro ha rimosso l'errore per il completamento automatico. Ho dovuto modificare il file captcha predefinito su ... / pub / static / frontend / Magento / luma / en_US / Magento_Captcha / js / view / checkout / defaultCaptcha.js

per restituire null se la configurazione a cui tenta di fare riferimento non esiste. Tuttavia, ciò rimuove solo l'errore, ma la pagina di checkout è ancora vuota.

Ho il sospetto che potrebbe avere a che fare con il tema che non ricade correttamente.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.