2017-04-01 93 views
2

与module.exports定义我得到的错误:“登录没有定义”在我的Node.js应用程序,当我尝试从一个模块module1.js这需要得到函数login在我server.jsdata功能上没有的NodeJS

//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(); 

回答

2

节点开始执行的模块代码,既module.exportsexports指向同一个对象。当您重新分配module.exports时,您将指定将从模块返回的另一个对象。在你的情况下,这是一个功能(data)=>{...}。变量exports一直指向旧的模块对象。

您需要:

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

还是这样短:

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

或者,如果你想同时输出功能,你需要将它们添加到exports对象。

+0

非常感谢:) –

+0

@PierreNicolas,不客气。不要忘记你可以接受我的答案,它有帮助) –