0

我有多个模块,我做到了:

// 模块1.js

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

// 模块2.js

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

在 app.js 中

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

m1.method()
m2.method()

我得到类型错误。然后我最终在两个模块中导出方法。

除了显式导出单个方法之外,还有其他方法可以导出多个模块吗?

4

1 回答 1

0

看起来您正在尝试两次传递require()一个变量。undefinedrequire() 需要将字符串作为参数来确定要加载的模块。

如果另外两个模块和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();
于 2013-07-13T02:38:31.730 回答