多个 module.exports 用于 NodeJS
Multiple module.exports for NodeJS
我试图在我的 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> (....
请问我该如何解决这个问题?有 Stack Overflow 问题询问如何在 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');
当您执行以下操作时:
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
您似乎在寻找
let one = '';
module.exports = function(msg) {
console.log(data+'::'+msg);
};
module.exports.one = function(data){
one = data;
};
请注意,exports
变量只是 module.exports
对象的别名,当用您的函数覆盖它时,您丢弃了它的内容。您需要将 one
方法放在主函数上。
我试图在我的 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> (....
请问我该如何解决这个问题?有 Stack Overflow 问题询问如何在 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');
当您执行以下操作时:
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
您似乎在寻找
let one = '';
module.exports = function(msg) {
console.log(data+'::'+msg);
};
module.exports.one = function(data){
one = data;
};
请注意,exports
变量只是 module.exports
对象的别名,当用您的函数覆盖它时,您丢弃了它的内容。您需要将 one
方法放在主函数上。