我一直在尝试在生产环境中保存一些ajax调用。为此,我将一些脚本捆绑并缩小了,但我正在努力使用select2及其翻译文件。
我在built.js中包含了jQuery + bootstrap +(很多deps)+ select2 + select2 i18n文件并设置了shim值(我不认为这是必需的)。
jquery和select2都粘贴在i18n文件之前。
添加了以下配置(在生产环境中):
requirejs.config({
bundles: {
'built': [
'jquery',
'bootstrap',
'highcharts',
'bootbox',
'datatables',
'datatables-bootstrap',
'i18n',
'moment',
'knockout',
'knockout-mapping',
'pnotify',
'pnotify.nonblock',
'pnotify.desktop',
'pnotify.buttons',
'select2/select2',
'select2/i18n/pt-BR',
'select2/i18n/es',
'select2/i18n/en'
]
}
});
但是,当我尝试使用所有缩小的资源加载我的应用程序时,我在控制台上收到错误:
未捕获的TypeError:无法读取未定义的属性'define'
在这一行:
(function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define("select2/i18n/pt-BR",[],function()
waitSecondsTimeout到期后几秒钟:
未捕获错误:模块的加载超时: SELECT2 / I18N / PT-BR,SELECT2 / I18N / ES,SELECT2 / I18N / EN
应用程序在没有构建文件的情况下运行良好。
答案 0 :(得分:0)
我有一个类似的问题,不确定是什么导致它,延迟加载,或使用多个线程加载javascript的浏览器,但我解决了它通过包装i18n文件函数与此
(function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd){
^
请注意添加的荣誉。
然后在文件的最后,在最后一个荣誉之前,我添加了
}
else {
window.setTimeout(arguments.callee,10);
}})();