Javascript RequireJS模块未加载依赖项

Javascript RequireJS模块未加载依赖项,javascript,requirejs,amd,Javascript,Requirejs,Amd,我在使用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', ['MenuMo

我在使用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”函数。不会提取文件2中的依赖项,也不会计算传递给“define”函数的函数。您能看到导致此问题的原因吗?

我认为您将路径与模块ID混淆了。很容易将两者混淆,因为路径最终会导致根据重新选择的方式定义moduleID,但是当您在模块引用中放置相对符号时,不要考虑“向上移动路径”,而是“向上移动模块层次结构”

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


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

请使用控制台中的错误更新问题。我可以看到一些奇怪的事情:(1)使用命名模块,(2)以模块的名义使用
。/
(我打赌这很可能是罪魁祸首)(3)文件2中的长
。/
链(非常脆弱)和(4)可疑依赖路径(不应该是
。/../../../../../../../../app2/MenuController“
只是
”/app2/MenuController“
甚至
“app2/MenuController”
?)最奇怪的是,我在控制台中没有从requireJS中得到任何错误。根据第4点,据我所知,所有路径都应该相对于require.config中定义的baseUrl。配置非常简单。我在“app1”的上下文中将“baseUrl”设置为“./js”。这有什么作用?这只是意味着基本url是js目录r与加载的html页面相关。与模块名称无关。从定义函数中删除模块名称真的很有帮助!谢谢!