javascript - 需要时 Node 模块未定义

标签 javascript node.js module

当我尝试需要 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/

相关文章:

python - 如何在python函数中将变量分配给模块名称

javascript - Date.toLocaleDateString() 不适用于 Nodejs v10.14.2

javascript - Java套接字io未知传输未定义

node.js - 在运行 appium 之前,我有一个警告作为 DeprecationWarning。它是什么?

javascript - 无法通过 Node 在控制台中运行简单代码

php - php 模块选择什么模式?

javascript - 如何在不重定向的情况下获取 PHP 脚本?

javascript - 如何从服务器端 JavaScript 获取值并将它们存储在 Swift 的 plist 中?

javascript - node.js 需要来自父文件夹

ruby - 了解 self.including 在 ruby​​ 中