为什么requireJs不会加载定义的依赖模块?

时间:2014-07-25 15:24:45

标签: backbone.js requirejs

使用Require.js加载我的模块的依赖项时遇到问题。基本上我有以下模块,我在其中定义了Backbone Model的扩展。

define(["models/services/ProjectServices"],

    function (ProjectServices) {

        var SomeModel = Backbone.Model.extend({

             sample: function () {
             var servicesFromDependency = ProjectServices; //undefined
             var projectServices = window.require.s.contexts._.defined["models/services/ProjectServices"]; //defined and Ok
             }
         });
        return SomeModel;
    }
);

在这个模块中,我想使用已定义的ProjectServices模块。为此,我将其添加为依赖项。问题是在定义的示例函数中,ProjectServices显示为未定义。但是,如果我直接查看需要定义的模块,它正确地显示在那里,我可以使用它(虽然我不想,因为我不喜欢以这种方式破解它)。为了添加更多上下文,我也在其他模块上使用这个ProjectServices依赖项,并通过define函数正确加载它。

有关为什么不加载模块的任何建议?

2 个答案:

答案 0 :(得分:1)

我唯一能想到的是一个可能的循环引用,意味着两个模块相互需要(不应该是这种情况)。

正如您所说,require在其他模块中运行良好,不应该是由于所需模块中缺少return语句或错误的路径。 (无论如何你可能会检查这个)。

答案 1 :(得分:1)

在模块中尝试:

var ProjectServices = require('models/services/ProjectServices');

我认为在很多情况下,不需要窗口全局分配,我试图避免使用requirjs。