我试图在nodejs模块中添加两个module.exports。我尝试了以下模块代码:

exports.one = function(data){
    const one = data;
};
module.exports = function(msg) {
    console.log(one+'::'+msg);
};

下面是index.js的代码:
var myModule = require('./mymodule.js');


myModule.one('hi');
myModule('bro');
myModule('Dear');
myModule('Dude');

我希望它将以下数据登录到控制台:
hi bro
hi Dear
hi Dude

但控制台上说:
TypeError: myModule.one is not a function
    at Object.<anonymous> (....

请问我该如何解决这个问题?存在堆栈溢出问题,询问如何在nodejs模块中使用多个module.exports。但答案如下:
exports.one = function (){};
exports.two = function (){};

但是如果我用那代码,我必须用
myModule.one('hi');
myModule.two('bro');
myModule.two('Dear');
myModule.two('Dude');

而不是:
myModule.one('hi');
myModule('bro');
myModule('Dear');
myModule('Dude');

最佳答案

你好像在找

let one = '';
module.exports = function(msg) {
    console.log(data+'::'+msg);
};
module.exports.one = function(data){
    one = data;
};

注意,exports变量只是module.exports对象的别名,当用函数覆盖它时,您丢弃了它的内容。您需要将one方法放在主函数上。

关于javascript - NodeJS的多个module.exports,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/51520696/

10-11 11:17