20%的情况下,使用RequireJS时脚本加载失败。
除了JS库之外,我在应用程序中使用的其他文件还需要base.js文件,其中包含配置和下划线的一些设置。骨干。没有这些设置,其他文件将无法正常工作。
以下内容中的脚本标记:
<script data-main="http://*path*/js/common" src="http://*path*/js/lib/require.js"></script>
common.js文件是
requirejs.config({
shim: {
underscore: {
exports: "_"
},
backbone: {
deps: ["jquery", "underscore"],
exports: "Backbone"
},
base: {
deps: ["backbone"]
}
},
paths: {
jquery: [
'//ajax.googleapis.com/ajax/libs/jquery/1.8.2/jquery.min',
'http://*path*/media/admin/js/lib/jquery.min'
],
base: 'http://*path*/media/admin/js/base',
backbone: 'http://*path*/media/admin/js/lib/backbone',
underscore: 'http://*path*/media/admin/js/lib/underscore'
}
});
base.js文件,包含backbone,underscore和jQuery的设置,包含:
define(['jquery', 'backbone', 'underscore'], function(jQuery, Backbone, _) {
//CODE
return var;
});
其他文件包含
define(['base'], function(var) {
//CODE
});
在页面中我使用以下方式加载文件:
require(['common'], function() {
require(['page/file'], function() {
//CODE
});
});
我做错了什么,为什么jQuery,下划线和骨干有时会加载失败,我该如何解决?
错误消息是:
GET http://*host*/backbone.js 404 (Not Found) require.js:1
Uncaught Error: Script error for: backbone
http://requirejs.org/docs/errors.html#scripterror
答案 0 :(得分:3)
我不知道这是唯一的问题,但应删除此垫片:
base: {
deps: ["backbone"]
}
您已展示调用base.js
的{{1}}文件。规则很简单:如果模块调用define
,则使用define
设置依赖关系,并使用传递给define
的函数的返回值来设置模块的值;如果您的模块不调用define
,那么您需要一个垫片来设置依赖关系并确定模块的值(如果需要)。