RequireJS:定义模块 - TypeError:无法获取undefined或null引用的属性

时间:2014-09-23 16:13:30

标签: javascript requirejs

我有两个JavaScript文件file1.jsfile2.js,我想从中创建模块以与RequireJS一起使用。

file1.js

define('file1', ['file2'], function(myVar) {
    console.log(myVar);

    myVar.doSomething = function() {
        return {
            'test': 13
        }
    }
});

正如您所看到的,file2.js存在依赖关系,我需要获得myVar。在这里,您可以看到file2以及我在此文件中执行的代码片段。

file2.js

define('file2', ['someOtherDep'], function(someVarFromSomeOtherDep) {
    var myVar = (function() {
        var test = someVarFromSomeOtherDep.test.a;

        var doIt = function(var1) {
            // …
            return x;
        };

        return {
            doIt: doIt
        }
    }());
    console.log(myVar);
    return myVar;
});

如果我使用file1作为依赖关系并致电myVar.doSomething(),我会TypeError: Unable to get property 'doSomething' of undefined or null reference,而console.log都会显示[object Object] {}

以下是取决于file1的文件:

define(['file1'], function(myVar) {
    var test = myVar.doSomething();
});

那么,这里有什么问题?似乎myVar

未正确返回file2

1 个答案:

答案 0 :(得分:1)

  

console.log显示[object Object] {}

这很奇怪。您是否尝试过扩展视图?你应该能够看到你的方法。

  

我得TypeError: Unable to get property 'doSomething' of undefined or null reference   那么,这里有什么问题?似乎myVar没有从file2正确返回?

没有。

myVar

您从第define('file1', ['file2'], function(myVar) { console.log(myVar); myVar.doSomething = function() { return { 'test': 13 } } return myVar; // ^^^^^^^^^^^^^ }); 行(取决于文件1)收到错误,而不是来自文件1(取决于文件2)。