当我尝试需要 Node 模块时,出现了一个非常奇怪的错误。为了说明问题,这里是我试图要求的代码:
module.exports = (function(){
this.say = function(message) {
console.log(message);
}
})();
现在,当我需要这个模块时,当我尝试按如下方式使用它时,我得到“无法读取未定义的属性“say”:
var person = require('./Person.js')
person.say('Hello World!');
但是,如果我按如下方式定义模块,它就可以正常工作......
module.exports = {
say : function(message) {
console.log(message);
}
};
我什至尝试了这种也有效的符号......
module.exports = new Person();
function Person(){
this.say = function(message) {
console.log(message);
}
};
有人知道为什么第一个符号不能正常工作吗?
最佳答案
原因是您的第一个符号不会返回任何要导出的内容。
module.exports = (function(){
this.say = function(message) {
console.log(message);
}
return this;
})();
我想这应该可以解决你的问题。
关于javascript - 需要时 Node 模块未定义,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35250904/