无法设置属性' X'尝试分配值时未定义

时间:2014-10-15 05:58:49

标签: javascript node.js

如果您的目标是Detecting an undefined object property,那么请检查该问题。

如果您感到困惑,为什么JavaScript引擎在您尝试访问其中一个属性时声明变量未定义,那么您可能会像我一样犯同样的愚蠢错误。继续阅读并检查接受的答案。


我有以下代码产生错误:

档案lib.js

var Lib;

(function() {
    var X = "X";        
    Lib.X = X;
})();

module.exports = Lib;

在命令行上运行时:

$ node lib.js

Node.js产生以下错误:

lib.js:4
    Lib.X = X;
       ^
TypeError: Cannot set property 'X' of undefined
    at <path>\lib.js:4:8
    at Object.<anonymous> (<path>\lib.js:
16:2)
    at Module._compile (module.js:446:26)
    at Object..js (module.js:464:10)
    at Module.load (module.js:353:31)
    at Function._load (module.js:311:12)
    at Array.0 (module.js:484:10)
    at EventEmitter._tickCallback (node.js:190:38)

我可以看到问题出现在Lib.X = X;语句中。但我不确定该行是否会破坏任何语法/语义规则。我理解这一行:将function X分配给变量X的属性Lib

我做错了什么?

2 个答案:

答案 0 :(得分:4)

Lib未定义。 undefined不是对象,因此您无法在其上设置任何属性。您可能希望在文件的开头:

var Lib = {};

答案 1 :(得分:3)

变量Lib未定义,因此您无法为其指定任何内容。

您需要首先定义它,作为一个最小的例子:

var Lib = {};