我在使用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的依赖关系,并且函数传递给'定义'函数未被评估。你能看出导致这个问题的原因吗?
答案 0 :(得分:1)
我认为您将路径与模块ID混淆。将一个与另一个混淆是很容易的,因为路径最终会导致根据它的重新定义来定义moduleID,但是当你在模块参考中放入相对符号时,不要考虑& #39;沿着一条路走上去,而不是向上移动模块层次结构。
所有这些意味着您需要与我们共享您的路径配置,以便我们可以看到如何将引用的模块ID转换为加载路径。
同意:将moduleID直接放在define()调用中有代码味道。您应该让amd加载器为您定义moduleID(通过使它们成为匿名模块。