我正在尝试使用 RequireJS加载浏览器模块,我遇到了一个有趣的问题。
我有 3 个名为 a
、b
和 c
的模块,具有这些简单的源代码:
a.js
define(['./b', './c'], function(c, b) {
console.log('A IS LOADED!');
return 'A';
});
b.js
define(function() {
console.log('B IS LOADED!');
return 'B';
});
c.js
define(function() {
console.log('C IS LOADED!');
return 'C';
});
当我单独加载模块 a
时,一切正常,运行以下代码并返回“A”:
require(['./a'], function(a) {
console.log(a); // 'A'
});
但是如果我需要两个不同的模块,其中一个已经加载:
require(['./a', './c'], function(a, c) {
console.log(a, c);
});
RequireJS 会报错:
C IS LOADED!
B IS LOADED!
require.js load timeout for modules: ./c
当它显然已经加载时。
有没有人遇到过这个问题?我该如何解决?
最佳答案
根据 RequireJS 网站(http://requirejs.org/docs/errors.html#timeout):
可能的原因和修复:
列出的模块之一存在脚本错误。如果浏览器的错误控制台中没有脚本错误,并且您正在使用 Firebug,尝试在其他浏览器(如 Chrome 或 苹果浏览器。有时脚本错误不会显示在 Firebug 中。
模块的路径配置不正确。检查浏览器的开发者工具中的“网络”或“网络”选项卡,看看是否有 将映射到模块名称的 URL 的 404。确保 脚本文件在正确的位置。在某些情况下,您可能需要使用 修复脚本 URL 解析的路径配置。
关于javascript - RequireJS - 加载一个已经加载的模块,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4810384/