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.