RequireJS 模块不加载依赖项
RequireJS module not loading dependencies
我在使用 requireJS 加载模块时遇到问题。我有两个文件:
文件 1:app1/js/utils/commons/commons.js
define("utils/commons/commons",
[
"../../../../app2/MenuModule"
], function (MenuModule) {
//MenuModule is undefined here
var app = angular.module('commons', ['MenuModule']);
});
文件 2: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的'define'函数是运行。不获取 File2 的依赖项,不评估传递给 'define' 函数的函数。你能看出是什么导致了这个问题吗?
我认为您将路径与模块 ID 混淆了。很容易将一个与另一个混淆,因为路径最终导致根据它的重新定位方式定义 moduleID,但是当您将相关符号放在模块引用中时,不要考虑 'going up a path',而是“向上移动”模块层次结构。
这意味着您需要与我们共享您的路径配置,以便我们可以看到如何将引用的模块 ID 转换为加载路径。
也同意:将 moduleID 直接放在 define() 调用中有代码味道。您应该让 amd 加载程序为您定义 moduleID(通过使它们成为匿名模块。
我在使用 requireJS 加载模块时遇到问题。我有两个文件:
文件 1:app1/js/utils/commons/commons.js
define("utils/commons/commons",
[
"../../../../app2/MenuModule"
], function (MenuModule) {
//MenuModule is undefined here
var app = angular.module('commons', ['MenuModule']);
});
文件 2: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的'define'函数是运行。不获取 File2 的依赖项,不评估传递给 'define' 函数的函数。你能看出是什么导致了这个问题吗?
我认为您将路径与模块 ID 混淆了。很容易将一个与另一个混淆,因为路径最终导致根据它的重新定位方式定义 moduleID,但是当您将相关符号放在模块引用中时,不要考虑 'going up a path',而是“向上移动”模块层次结构。
这意味着您需要与我们共享您的路径配置,以便我们可以看到如何将引用的模块 ID 转换为加载路径。
也同意:将 moduleID 直接放在 define() 调用中有代码味道。您应该让 amd 加载程序为您定义 moduleID(通过使它们成为匿名模块。