簡體   English   中英

NodeJS的多個module.exports

[英]Multiple module.exports for NodeJS

我試圖在我的module.exports模塊中添加兩個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方法。

當您執行以下操作時:

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

首先,將屬性一個分配給模塊對象( exports.one=... )。 然后,用第二行重新設置整個module.exports對象,從而擦除您賦予它的第一個功能。

您可以這樣解決:

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

然后,您可以像下面這樣調用其他模塊中的函數:

var myModule = require('./mymodule.js');
myModule.one(arg1) // calls first function
myModule.two(arg2) // calls second function

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM