RequireJS并不总是加载模块

时间:2014-02-20 11:18:21

标签: javascript jquery backbone.js requirejs underscore.js

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 

1 个答案:

答案 0 :(得分:3)

我不知道这是唯一的问题,但应删除此垫片:

base: {
    deps: ["backbone"]
}

您已展示调用base.js的{​​{1}}文件。规则很简单:如果模块调用define,则使用define设置依赖关系,并使用传递给define的函数的返回值来设置模块的值;如果您的模块调用define,那么您需要一个垫片来设置依赖关系并确定模块的值(如果需要)。