RequireJS不使用Shim’ed jQuery插件

插件几乎总是坚持在jQuery之前加载。 由于我使用垫片设置,他们不应该这样做。

在我的main.js中,我有以下设置:

requirejs.config({ paths: { 'jquery': 'https://ajax.googleapis.com/ajax/libs/jquery/1.8.3/jquery.min', 'bootstrap': '../bootstrap/js/bootstrap.min', 'select2': 'vendor/select2', 'jshashtable': 'vendor/jshashtable-2.1', 'jquery.numberformatter': 'vendor/jquery.numberformatter-1.2.3.min', 'jq-datepicker': 'vendor/bootstrap-datepicker', 'jq-datepicker.da': 'vendor/bootstrap-datepicker.da' }, // Use shim for plugins that does not support ADM shim: { 'bootstrap': ['jquery'], 'select2': ['jquery'], 'jq-datepicker': ['jquery'], 'jshashtable': ['jquery'], 'jquery.numberformatter': ['jquery', 'jshashtable'] }, enforceDefine: true }); 

稍后在这个文件中我有以下内容:

 // Start the main app logic. requirejs(['jquery', 'bootstrap', 'jq-datepicker'], function ($) { console.log('Require.JS loaded'); // Init datepickers // Docs: https://github.com/eternicode/bootstrap-datepicker $('.datepicker').datepicker({ format: 'dd/mm/yyyy', language: 'da', keyboardNavigation: false, autoclose: true }); }); 

但是我总是得到这个错误:

 Uncaught TypeError: undefined is not a function bootstrap.min.js:6 (anonymous function) bootstrap.min.js:6 (anonymous function) 

我可以在Chrome网络标签中看到它是在jQuery之前加载的。

现在我尝试在stackoverflow上查看后添加enforceDefine: true ,但没有运气。 我尝试将requirejs.config移动到我的html页面。 我尝试从本地文件加载jQuery。 一切都没有运气。

我错过了什么?

你也是jquery吗?

 shim: { jQuery: { exports: 'jquery' }, 'bootstrap': { exports : 'jquery' }, 'select2': { exports :'jquery' }, ... }, 

是不是你想要出口?

 shim: { 'jquery': { exports: '$' }, 'jqueryuitouchpunch': { deps: ['jqueryui'] }, } 

尝试:

 shim: { 'bootstrap': { exports : 'jquery' }, 'select2': { exports :'jquery' }, ... }, 

只需确保在插件之前加载jQuery,使用define:

 // Start the main app logic. requirejs(['jquery', 'bootstrap'], function ($) { define(['jq-datepicker'], function() { $('.datepicker').datepicker({ format: 'dd/mm/yyyy', language: 'da', keyboardNavigation: false, autoclose: true }); }); });