JS ошибки Magento 2


11

Я пытался что-то доделать и опубликовать в интернете все эти выходные, кое-что сломалось, и я понятия не имею, почему, поэтому я надеюсь, что кто-то может мне помочь.

Я попытался добавить пользовательский jQuery в свою пользовательскую тему, но с успехом загрузил jQuery и заработал . Однако! Это не функционировало должным образом. Например, Safari не загружал jQuery, и я продолжал получать эти ошибки в своей консоли:

defaultCaptcha.js: 29 Uncaught TypeError: Невозможно прочитать свойство 'captcha' неопределенного authentic-popup.js: 26 Uncaught TypeError: Невозможно прочитать свойство 'autocomplete' undefined (анонимная функция)

Я думал, что это как-то связано с тем, как я объявил свой jQuery, но когда этого не произошло, я решил удалить все свои пользовательские JS, и я все еще получал эти ошибки. Кажется, что-то сломано дальше.

Моя настраиваемая «Тема» - это простая целевая страница, в которой нет ничего больше, чем я.

Что может вызвать эти ошибки?


3
Для будущих пользователей Google это известная проблема, которая отслеживается в GitHub github.com/magento/magento2/issues/8532
tim.baker

Ответы:


15

Замените в клиентском модуле в файле authentication-popup.js:

autocomplete: window.checkout.autocomplete

с:

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

После обновления запустить

php bin / magento setup: static-content: deploy


Обновить

Проблема может быть исправлена ​​в более новых версиях: 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,

был заменен на:

autocomplete: window.authenticationPopup.autocomplete,

Это обновление является информативным и не предоставляет полного решения, поскольку более новые версии Magento 2 идут с другими изменениями.

Вот коммит, который изменился на этот: https://github.com/magento/magento2/commit/362f62f3c9b6c2994070615d82efbdf19f15fe50


Мы опробовали это решение и до сих пор видим ошибку, даже после запуска команд setup: upgrade, di: compile, static-content: deploy, cache: clean и cache: flush. Любые другие предложения?
Codestr

Это должно уйти. Посмотрите, есть ли изменение в браузере в файле authentication-popup.js (проблема с кешем браузера). Также посмотрите, не перезаписан ли этот файл другим файлом с расширением, точнее посмотрите, происходит ли ошибка из указанного JS-файла или другого.
неясный

Трассировка стека указывает на файл authentication-popup.js, и нет никаких расширений / модулей, перезаписывающих его, которые я могу найти. Я также подумал, что это может быть проблема с кешем, но мне тоже не повезло. Я уверен, что это, вероятно, что-то простое, я упускаю из виду, в конце концов я пойму это, лол.
codestr

Я попробовал это решение, ошибка ушла, но я не знаю, как вообще исправить, я оставляю его вендору (с комментарием todo) до нашего следующего обновления версии magento? У кого-нибудь есть рекомендации?
medmek

1
@medmek Вы можете создать патч git / diff для исправления основных файлов. Magento enterprise использует его здесь: devdocs.magento.com/guides/v2.2/cloud/project/…
неизвестно

1

После переопределения файлов из ядра необходимо очистить кэш статических файлов (даже если все режимы отключены для режима по умолчанию), чтобы увидеть эффект. Никогда не редактируйте файлы pub / static / frontend, потому что они являются сгенерированными файлами.


0

Похоже, что ошибка вызвана ссылкой на автозаполнение и капча не существует, когда они должны. Делать то, что малоизвестно, удаляло ошибку для автозаполнения. Мне пришлось отредактировать файл капчи по умолчанию в ... / pub / static / frontend / Magento / luma / en_US / Magento_Captcha / js / view / checkout / defaultCaptcha.js

вернуть ноль, если конфиг, на который он пытается сослаться, не существует. Однако это только устраняет ошибку, но страница оформления заказа остается пустой.

Я подозреваю, что это может быть связано с тем, что тема не возвращается должным образом.

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.