获取'未捕获错误:脚本错误'对于使用r.js时声明的依赖项

时间:2014-04-09 21:25:47

标签: requirejs r.js

我在SO或Github上找不到我的问题的答案,所以我发布了这个:

我为此问题创建了一个回购: https://github.com/saviomuc/requireJSMultiPage

我尝试为多项目设置require.js.

运行页面时一切正常。 但是当我尝试用r.js优化文件时,我收到了这个错误:

GET http://localhost:63342/requirejs/www-build/js/library.js 404 (Not Found) require.js:7
Uncaught Error: Script error for: library
http://requirejs.org/docs/errors.html#scripterror 

设置如下:

js/app/app1.js
js/app/app1jq.js
js/lib/require.js
js/lib/library.js
main-page1.js

目前require.js加载包含此代码的文件(main-page1.js)

require(['common','app/app1','app/app1jq'], function (config) {});

common.js包含

requirejs.config({
    paths: {
        library: 'lib/library'
    }
});
console.log('This is the config!');

app1jq.js包含

define(function (require) {
    var library = require('library');
    console.log('This is dependent on library');
});

这可能是优化器的问题吗?或者我做错了什么?

最好,并提前感谢你!

1 个答案:

答案 0 :(得分:6)

问题是不保证首先加载common。因此,当RequireJS到达require('library')时,可能已设置或未设置配置。致电require(['a', 'b', 'c'], function () {})时,RequireJS可以先加载c,或先加b,或先加a。订单未设置。唯一的保证是在调用回调之前将加载所有模块。

因此,请更改main-page1.js,使其包含:

require(['common'], function () {
    require(['app/app1','app/app1jq']);
});

这将确保在任何依赖于您的配置的代码之前加载common