【问题标题】:require giving 'not loaded' message despite file being loaded尽管文件正在加载,但仍需要给出“未加载”消息
【发布时间】:2012-08-25 00:11:41
【问题描述】:

我有一个模块定义如下:

define(
    ['backbone', 'View/Sidebar', 'View/ControlBar'],
    function() {
        ...
    }
);

在那个模块中有一个叫做 loadView 的方法,它分配一个变量如下:

loadView: function(name, bootstrap_function, into) {
    var _class  = require('View/'+name);
    ...
}

所以,我们可以看到 View/SidebarView/ControlBar 都被定义调用(第一个参数)加载。当我使用require('Sidebar') 时,我没有收到任何错误,但如果我使用require('ControlBar'),我确实得到了臭名昭著的:

Error: Module name "View/ControlBar" has not been loaded yet for context: _

(http://requirejs.org/docs/errors.html#notloaded)

我已经重写、复制和粘贴,验证了它是否已加载到 Firebug 等中,但我终其一生都无法弄清楚为什么 100% 的时间都会出现此错误。

【问题讨论】:

  • 我没有从您发布的代码中看到任何问题。是否也可以发布视图/控制栏、视图/侧边栏?也许在需要这个模块的 View/ControlBar 中有一个循环引用?
  • 不幸的是,自从我发布此代码以来,代码已经发生了很大变化,我不确定哪些提交与此处相关。但是,完全有可能存在循环引用,所以也许这样做了。谢谢。

标签: requirejs amd


【解决方案1】:

我认为这与如何为 require 调用参数有关。我发现以下会引发错误

define(
    ['mymodule1', 'mymodule2'],
    function(mod1, mod2) {
        ...
        var x = require('mymodule2');
        ...
    }
);

而以下不是:

define(
    ['mymodule1', 'mymodule2'],
    function() {
        ...
        var x = require('mymodule2');
        ...
    }
);

区别在于加载的模块是否被声明为函数的参数。至少在我看来是这样的,但是,它没有多大意义……

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-05-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-12-01
    • 1970-01-01
    相关资源
    最近更新 更多