2014-02-20 522 views
2

20%的时间,脚本在使用RequireJS时无法加载。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文件,与骨干网的设置,下划线和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,下划线和骨干网有时会加载失败nd我该如何解决这个问题?

的错误信息是:

GET http://*host*/backbone.js 404 (Not Found) require.js:1 

Uncaught Error: Script error for: backbone 
http://requirejs.org/docs/errors.html#scripterror 
+2

你为什么要返回var?当然这会导致错误? –

+0

你能发布确切的错误信息吗? –

回答

2

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

base: { 
    deps: ["backbone"] 
} 

你所示base.js文件那叫define。规则很简单:如果你的模块调用define,然后使用define设置的依赖,并传递给define函数的返回值来设置模块的价值;如果您的模块不是而是请致电define,那么您需要一个垫片来设置依赖关系并确定模块的值(如果需要)。