JS errores Magento 2

11

He estado tratando de terminar algo y publicarlo en línea todo este fin de semana, está algo roto y no tengo idea de por qué, así que espero que alguien pueda ayudarme.

Intenté agregar jQuery personalizado a mi tema personalizado, con éxito ya que jQuery se cargó y la función funcionaba. ¡Sin embargo! No funcionaba correctamente. Por ejemplo, Safari no cargaba jQuery y seguía recibiendo estos errores en mi consola:

defaultCaptcha.js: 29 TypeError no capturado: no se puede leer la propiedad 'captcha' de autenticación indefinida-popup.js: 26 TypeError no capturado: no se puede leer la propiedad 'autocompletar' de undefined (función anónima)

Pensé que tenía algo que ver con la forma en que declaró mi jQuery, pero cuando ese no parecía ser el caso, decidí eliminar todo mi JS personalizado, y todavía recibí estos errores. Algo parece estar roto más arriba, supongo.

Mi 'Tema' personalizado es solo una simple página de destino con nada más que un cuadro de suscripción personalizado.

¿Qué podría causar estos errores?

magin
fuente
3
Para futuros Googlers, este es un problema conocido y está siendo rastreado en GitHub github.com/magento/magento2/issues/8532
tim.baker

Respuestas:

15

Reemplace en el módulo del cliente en el archivo autenticación-popup.js:

autocomplete: window.checkout.autocomplete

con:

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

Una vez actualizado ejecutar

php bin / magento setup: static-content: deploy


Actualizar

El problema puede solucionarse en versiones más nuevas: 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,

fue reemplazado por:

autocomplete: window.authenticationPopup.autocomplete,

Esta actualización es informativa y no proporciona la solución completa ya que las nuevas versiones de Magento 2 incluyen otros cambios.

Aquí está la confirmación que cambió a esto: https://github.com/magento/magento2/commit/362f62f3c9b6c2994070615d82efbdf19f15fe50

oscuro
fuente
Hemos probado esta solución y todavía vemos el error presente, incluso después de ejecutar la configuración: actualizar, di: compilar, contenido estático: desplegar, caché: limpiar y caché: comandos de descarga. ¿Cualquier otra sugerencia?
codestr
Debería desaparecer. Vea si el cambio está en el navegador en el archivo autenticación-popup.js (problema de caché del navegador). También vea si este archivo no es sobrescrito por otro archivo desde una extensión, más exactamente vea si el error proviene del archivo JS especificado u otro.
oscuro
El seguimiento de la pila apunta de nuevo al archivo autenticación-popup.js, y no hay extensiones / módulos que lo sobrescriban que pueda encontrar. También pensé que tal vez era un problema de caché, pero tampoco tuve suerte allí. Estoy seguro de que probablemente sea algo simple que estoy pasando por alto, lo descubriré eventualmente lol
codetr
He intentado esta solución, el error desapareció pero no sé en general cómo parchear, ¿lo dejo en el proveedor (con un comentario de todo) hasta nuestra próxima actualización de la versión de magento? Alguien tiene una recomendación ?
medmek
1
@medmek Puede crear un parche git / diff como una solución en los archivos principales. Magento Enterprise lo usa aquí: devdocs.magento.com/guides/v2.2/cloud/project/…
oscuro
1

Después de anular los archivos del núcleo, debe limpiar el caché de archivos estáticos (incluso si todos los cachés están deshabilitados para el modo predeterminado) para ver el efecto. Nunca edite archivos pub / static / frontend porque son archivos generados.

usuario3127632
fuente
0

Parece que el error es causado por la referencia a autocompletar y captcha no existe cuando se supone que debe hacerlo. Al hacer lo oscuro, se eliminó el error de autocompletar. Tuve que editar el archivo captcha predeterminado en ... / pub / static / frontend / Magento / luma / en_US / Magento_Captcha / js / view / checkout / defaultCaptcha.js

devolver nulo si la configuración a la que intenta hacer referencia no existe. Sin embargo, eso solo elimina el error, pero la página de pago aún está en blanco.

Sospecho que podría tener que ver con que el tema no retroceda correctamente.

frostshoxx
fuente