【发布时间】:2017-03-09 11:40:25
【问题描述】:
我的 Magento2 项目中有以下 requirejs 配置:
var config = {
map: {
'*': {
productView: 'Mediahuis_Base/js/product-view',
refreshCartScript: 'Mediahuis_Base/js/checkout/refresh-cart',
addressCompletion: 'Mediahuis_Base/js/address/completion',
addressCompletionHelper: 'Mediahuis_Base/js/address/completion-helper',
prepareCheckoutShipping: 'Mediahuis_Base/js/checkout/shipping-prepare',
jquery: 'js/jquery-private',
/*'jquery/jquery.mobile.custom': 'jquery/jquery.mobile.custom',
'jquery/jquery-migrate': 'jquery/jquery-migrate',
'jquery/jquery-storageapi': 'jquery/jquery-storageapi',
'jquery/ui': 'jquery/ui',
'jquery/jquery.cookie': 'jquery/jquery.cookie',
'jquery/validate': 'jquery/validate',
'jquery/jquery-ui-timepicker-addon': 'jquery/jquery-ui-timepicker-addon',
'jquery/jquery.metadata': 'jquery/jquery.metadata'/**/
},
'js/jquery-private': {
jquery: 'jquery'
}
}
};
js/jquery-private.js
define([
"jquery"
], function (jq) {
return jq.noConflict();
});
我在示例中注释掉的路径应该动态解析,因为这个列表会一直变化(供应商文件)。
当我不手动添加这些时,我收到以下错误: 未捕获的错误:脚本错误:js/jquery-private/jquery-ui-timepicker-addon
在这种情况下,真正的文件位于 js/jquery/jquery-ui-timepicker-addon 中。如您所见,jquery/ 也在 jquery-private/ 中被解析。
此解决方法的原因是需要将所需的 jquery 模块作为 noConflict 版本插入。没有它,我会收到以下错误:Uncaught TypeError: $.widget is not a function。 由于我需要供应商 js 文件,因此我无法在此处更改源...
【问题讨论】: