不能要求带有module.exports的多个模块

时间:2013-07-13 02:34:21

标签: node.js

我有多个模块,我做了:

// module1.js

module.exports = function() {
  ...
}

// module2.js

module.exports = function() {
  ...
}
app.js中的

m1 = require('./module1')
m2 = require('./module2')

m1.method()
m2.method()

我得到TypeError。然后我最终导出了两个模块中的方法。

有没有一种方法可以导出多个模块而不是显式导出单个方法?

1 个答案:

答案 0 :(得分:0)

您好像试图将require() undefined变量传递两次。 require()需要将一个字符串作为参数来确定要加载的模块。

如果其他两个模块与app.js位于同一目录中,请尝试

m1 = require('./module1')
m2 = require('./module2')

修改 你忘记做的是

m1 = new require('./module1')()
m2 = new require('./module2')()

假设你的模块看起来像:

module.exports = function() {
  this.method = function(){}
}

就个人而言,我只是从我的模块中返回一个对象文字而不是函数:

module.exports = {
  method1: function(){},
  method2: function(){}
}

然后我可以调用模块导出中的方法,如:

m1 = require('./module1');
m1.method1();