函数没有用nodejs上的module.exports定义

我得到的错误: “login未定义”在我的node.js应用程序,当我尝试从需要data的模块module1.js从我的server.js获取函数login

 //module1.js module.exports = (data) => { var login = function(data){ console.log(data) } exports.login = login; }; //server.js var test = require(__dirname + '/app/modules/module1.js')(data); test.login(); 

当节点开始执行模块代码时, module.exportsexports指向同一个对象。 当您重新分配module.exports ,您将指定将从模块返回的另一个对象。 在你的情况下,它是一个函数(data)=>{...}exportsvariables保持指向旧的模块对象。

您需要以下内容:

 module.exports = (data) => { var login = function(){ console.log(data) } return {login: login}; }; 

或者这样更短:

 module.exports = (data) => { return {login: function(){ console.log(data) }}; }; 

或者,如果要导出这两个函数,则需要将它们添加到exports对象。