如果您的目标是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
。
我做错了什么?
答案 0 :(得分:4)
Lib
未定义。 undefined不是对象,因此您无法在其上设置任何属性。您可能希望在文件的开头:
var Lib = {};
答案 1 :(得分:3)
变量Lib
未定义,因此您无法为其指定任何内容。
您需要首先定义它,作为一个最小的例子:
var Lib = {};