7

我正在尝试使用RequireJS加载浏览器模块,但遇到了一个有趣的问题。

我有 3 个名为 的模块ab并且c有这些简单的源代码:

一个.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 

当它显然已经加载时。

有没有人遇到过这个问题?我该如何解决?

4

1 回答 1

0

根据 RequireJS 网站(http://requirejs.org/docs/errors.html#timeout):

可能的原因和解决方法:

  • 列出的模块之一中存在脚本错误。如果浏览器的错误控制台中没有脚本错误,并且您使用的是 Firebug,请尝试在 Chrome 或 Safari 等其他浏览器中加载页面。有时脚本错误不会出现在 Firebug 中。

  • 模块的路径配置不正确。检查浏览器开发者工具中的“网络”或“网络”选项卡,看看是否有 404 用于映射到模块名称的 URL。确保脚本文件位于正确的位置。在某些情况下,您可能需要使用路径配置来修复脚本的 URL 解析。

于 2011-12-13T21:00:47.707 回答