JS错误Magento 2


11

我一直在努力完成一些事情,并在整个周末内将其发布在网上,这有些破破烂烂,我也不知道为什么要这么做,所以我希望有人能帮助我。

我尝试将自定义jQuery添加到我的自定义主题中,并成功加载了jQuery并且该函数正在运行。然而!它无法正常运行。例如,Safari无法加载jQuery,并且我在控制台中不断出现这些错误:

defaultCaptcha.js:29未捕获的TypeError:无法读取未定义身份验证的属性“验证码” -popup.js:26未捕获的TypeError:无法读取未定义的属性“自动完成”(匿名函数)

我以为这与我声明jQuery的方式有关,但是当情况并非如此时,我决定删除所有自定义JS,但仍然出现这些错误。我猜似乎有些东西要打破了。

我的自定义“主题”只是一个简单的登录页面,无非我的自定义订阅框。

什么会导致这些错误?


3
对于未来的Google员工,这是一个已知问题,已在GitHub github.com/magento/magento2/issues/8532中
tim.baker

Answers:


15

替换文件authentication-popup.js中的customer模块:

autocomplete: window.checkout.autocomplete

与:

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

更新运行后

php bin / magento设置:静态内容:部署


更新资料

该问题可能在较新的版本中得到修复: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

我已经尝试过该解决方案,但错误消失了,但是我通常不知道如何打补丁,我是否将其留在供应商(带有待办事项注释)中,直到下一个magento版本更新为止?有人推荐吗?
medmek

1
@medmek您可以创建一个git / diff补丁作为对核心文件的修复。Magento企业在这里使用它: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上编辑默认的验证码文件

如果尝试引用的配置不存在,则返回null。但是,这只会消除错误,但结帐页面仍为空白。

我怀疑这可能与主题无法正确回退有关。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.