我试图在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');
答案 0 :(得分:4)
您似乎正在寻找
https://s3-eu-west-1.amazonaws.com/support-zendesk/Config/tag_form_map.json
请注意,let one = '';
module.exports = function(msg) {
console.log(data+'::'+msg);
};
module.exports.one = function(data){
one = data;
};
变量只是exports
对象的别名,在用函数覆盖该变量时,您将其内容丢弃了。您将需要在主函数上放置module.exports
方法。
答案 1 :(得分:1)
您需要将您的对象创建为module.exports的子代。
为什么不使用module.exports.one以及module.exports.two等?
编辑:对不起。我错了。贝尔吉是对的。不知道为什么我要投票。 :P
答案 2 :(得分:0)
执行以下操作时:
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