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'
}
});
带有主干、下划线和jQuery设置的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
发布于 2014-02-20 04:34:19
我不知道这是不是唯一的问题,但是这个垫片应该移除:
base: {
deps: ["backbone"]
}
您已经显示了一个调用base.js
的define
文件。规则很简单:如果模块调用define
,则使用define
设置依赖项,并使用传递给define
的函数的返回值来设置模块的值;如果模块没有调用define
,则需要使用shim来设置依赖项并确定模块的值(如果需要)。
https://stackoverflow.com/questions/21906146
复制相似问题