select2 + requirejs:无法捆绑i18n文件

时间:2016-09-22 21:22:05

标签: javascript jquery requirejs select2

我一直在尝试在生产环境中保存一些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

应用程序在没有构建文件的情况下运行良好。

1 个答案:

答案 0 :(得分:0)

我有一个类似的问题,不确定是什么导致它,延迟加载,或使用多个线程加载javascript的浏览器,但我解决了它通过包装i18n文件函数与此

(function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd){
                                                                           ^

请注意添加的荣誉。

然后在文件的最后,在最后一个荣誉之前,我添加了

}
else {
    window.setTimeout(arguments.callee,10);
}})();