[英]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.