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 }); }); });