NodeJS 的多个 module.exports

Nod*_*Dev 2 javascript module node.js node-modules

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

exports.one = function(data){
    const one = data;
};
module.exports = function(msg) {
    console.log(one+'::'+msg);
};
Run Code Online (Sandbox Code Playgroud)

下面是index.js 的代码:

var myModule = require('./mymodule.js');


myModule.one('hi');
myModule('bro');
myModule('Dear');
myModule('Dude');
Run Code Online (Sandbox Code Playgroud)

我预计它将把以下数据记录到控制台中:

hi bro
hi Dear
hi Dude
Run Code Online (Sandbox Code Playgroud)

但控制台说:

TypeError: myModule.one is not a function
    at Object.<anonymous> (....
Run Code Online (Sandbox Code Playgroud)

请问我该如何解决这个问题?有 Stack Overflow 问题询问如何在 NodeJS 模块中使用多个 module.exports。但答案如下:

exports.one = function (){};
exports.two = function (){};
Run Code Online (Sandbox Code Playgroud)

但如果我使用该代码,我必须使用

myModule.one('hi');
myModule.two('bro');
myModule.two('Dear');
myModule.two('Dude');
Run Code Online (Sandbox Code Playgroud)

代替:

myModule.one('hi');
myModule('bro');
myModule('Dear');
myModule('Dude');
Run Code Online (Sandbox Code Playgroud)

Ber*_*rgi 5

您似乎正在寻找

let one = '';
module.exports = function(msg) {
    console.log(data+'::'+msg);
};
module.exports.one = function(data){
    one = data;
};
Run Code Online (Sandbox Code Playgroud)

请注意,该exports变量只是对象的别名module.exports,当使用函数覆盖该变量时,您会丢弃其内容。您需要将该one方法放在您的 main 函数中。