2017-04-01 66 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,不客氣。不要忘記你可以接受我的答案,它有幫助) –