RequireJS奇怪的未定义模块

时间:2015-04-07 14:02:54

标签: requirejs amd

我的模块设置中存在未定义变量的问题,最好通过示例解释,我有:

common.js(config for requirejs)

require([
    'module/polyfills/someModule'
], function(
    module
) {

    module.init();

});

模块/ polyfills / someModule.js

define([
    'underscore',
    'config',
    'text!tpl/utils/textTemplate.html'
    ], function(_, config, template) {

    // ref 1
    return {
        init: function() {
            // ref 2
            // do stuff
        },

        events: function() {
            // add some events
        },

    };
});

如果我在评论ref 1上添加断点,我可以看到config变量及其属性。但是,如果我在ref 2处设置断点,则config未定义。但是下划线和模板不是未定义的。

我在require配置中删除了有关config的任何特殊内容。 Config看起来像这样:

config.js

define([], function (clickType) {
    return {
        clickType: 'test'
    };
});

控制台中没有错误,我非常确定这不是循环依赖!

1 个答案:

答案 0 :(得分:0)

ref2处的注释位置是一个没有访问配置的闭包。该函数是在解析时创建的,它是一个闭包,无论你在里面访问它是什么都可用。简单测试,在// ref2

添加以下代码行
var myConfig = config;

现在您将看到配置已定义。