magento2 - Magento 2 JS 库有时无法加载
问题描述
我们目前正在运行一个 Magento 2.2.6 实例。有时产品库会因 JS 错误而中断:
未捕获的类型错误:settings.$elementF.fotorama 不是函数
这也发生在主页和目录页面上的其他 js 库上。有时我们会遇到错误
未捕获的 TypeError: $(...).CustomMenu 不是函数
如果您硬刷新/清除浏览器缓存,它会起作用,并且该页面的所有错误都会消失,但是如果您浏览该站点,它会在访问几页后再次抛出错误。
我已经尝试重新部署静态资产,打开和关闭静态签名,禁用所有扩展,禁用所有后端缓存并将我的 requirejs-config.js 文件更改为依赖和填充 jquery
var config = {
deps: ['jquery'],
map: {
'*' : {
'hello' : 'js/custom'
}
},
'fotorama/fotorama': {
deps: ['jquery']
}
}
这个问题之前已经发布过多次,任何建议将不胜感激。
解决方案
不幸的是,依赖数组不能保证按顺序加载。
您可以shim
在 requireJS 中使用,它可以让您定义库之间的依赖关系并导出可与其他库一起使用的全局变量。
本质上shim
,您可以使用该deps
属性来定义在使用包含的库之前应该加载的库。
你现在所拥有的很接近,但它不在垫片内
尝试这个:
var config = {
deps: ['jquery'],
map: {
'*' : {
'hello' : 'js/custom'
}
},
shim: {
// export the variable
jquery: {
exports: '$'
},
// fotorama depends on jquery
'fotorama/fotorama': {
deps: ['jquery']
}
}
}
推荐阅读
- c - C:为什么printf语句后字符值会发生变化?
- javascript - 如何在反应中正确显示日期?
- javascript - 向 API 提交带有对象数组的 Javascript 对象
- bunifu - 如何使用 c# 中的 bunifuTransition 从右向左滑动面板
- c++ - 使用列表的列表 iter 不可取消引用的插入排序
- spring-mvc - Spring MVC 挂起带有 Content-Length 标头但没有 POST 正文的 POST 请求
- c++ - 如何从组合索引中查找位置
- perl - 如何在perl中将左侧数据拆分为键,右侧数据询问值
- authorization - 使用 JWT 进行 Istio 授权
- grav - Grav CMS 通过管理员添加本地化