【发布时间】:2015-04-16 04:30:47
【问题描述】:
我有网站,它使用 intranet(小份额)以及 internet(大份额)。内网环境,不能上网。我计划为互联网用户从 CDN 加载 JavaScript,同时为 Intranet 用户使用本地版本。我正在使用 RequireJS 库来动态加载脚本,并在无法从 CDN 检索时使用故障转移。
我正在使用以下 requireJS 配置从 CDN 加载 jQuery 库或使用本地库。
出现问题,当 RequireJS 无法从 CDN 加载时,它会在加载本地版本的 jquery 之前加载引导库。这会导致两个错误,来自 bootstrap 的“Bootstrap 需要 jQuery”和来自 requireJS 的超时错误。
我的问题,如何避免这种情况?我希望引导程序等到加载任何(CDN 或本地)版本的 jQuery。我已经使用 Shim 来定义对 jQuery 库的引导依赖。但是,它并没有按预期工作。这是 requireJS 中的已知错误吗?
这里是我的配置代码
require.config({
paths: {
jquery: ['https://code.jquery.com/jquery-1.10.2'
, '/Scripts/_Ref/jquery-1.10.2'],
async: '/Scripts/_Ref/async',
propertyParser: '/Scripts/_Ref/propertyParser',
goog: '/Scripts/_Ref/goog',
bootstrap: '/Scripts/_Ref/bootstrap'
},
shim: {
'bootstrap': {
deps: ['jquery']
}
}
});
require.onError = function (err) {
console.log('RSC JS Error: ' + err.requireType);
if (err.requireType === 'timeout') {
var errorMessage = 'Following modules timeout: ' + err.requireModules;
console.log(errorMessage);
MyNamespace.ShowErrorMessage(errorMessage);
}
};
为了演示这个问题,我创建了一个示例网站,我在其中阻止了 Internet 并促使发生故障转移。 这是视频链接http://www.screencast.com/t/gcQ2I9aUdBY,我在其中展示了实际问题
【问题讨论】:
-
这绝对不是 RequireJS 的错误。您使用的是最新版本的 RequireJS 吗?
-
是的,我使用的是 RequireJS 2.1.14
标签: requirejs