RequireJS模块没有加载依赖项

时间:2015-07-17 09:09:31

标签: javascript requirejs amd

我在使用requireJS加载模块时遇到问题。我有两个文件:

File1:app1 / js / utils / commons / commons.js

define("utils/commons/commons",
    [
        "../../../../app2/MenuModule"
    ], function (MenuModule) {
//MenuModule is undefined here
var app = angular.module('commons', ['MenuModule']);

});

File2:app2 / MenuModule.js

define("../../../../app2/MenuModule",
    [
        "../../../../app2/MenuController",
        "../../../../app2/MenuRestProvider"

    ], function (MenuController,
    MenuRestProvider) {

var app = angular.module('MenuModule', []);

app.factory('MenuRestProvider', MenuRestProvider);
app.controller('MenuController', MenuController);

return app;

});

重点是:File1加载File2,并且'定义'运行File2中的函数。不提取来自File2的依赖关系,并且函数传递给'定义'函数未被评估。你能看出导致这个问题的原因吗?

1 个答案:

答案 0 :(得分:1)

我认为您将路径与模块ID混淆。将一个与另一个混淆是很容易的,因为路径最终会导致根据它的重新定义来定义moduleID,但是当你在模块参考中放入相对符号时,不要考虑& #39;沿着一条路走上去,而不是向上移动模块层次结构。

所有这些意味着您需要与我们共享您的路径配置,以便我们可以看到如何将引用的模块ID转换为加载路径。

同意:将moduleID直接放在define()调用中有代码味道。您应该让amd加载器为您定义moduleID(通过使它们成为匿名模块。