函数未在nodejs上使用module.exports定义

时间:2017-04-01 10:08:33

标签: javascript node.js

当我尝试从模块中获取login中的函数server.js时,我收到错误:我的node.js应用上的“登录未定义” module1.js需要data

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

1 个答案:

答案 0 :(得分:2)

当节点开始执行模块代码时,exportsmodule.exports都指向同一个对象。重新分配(data)=>{...}时,您将指定将从模块返回的另一个对象。在你的情况下,它是一个函数exportsmodule.exports = (data) => { var login = function(){ console.log(data) } return {login: login}; }; 变量始终指向旧模块对象。

您需要以下内容:

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

或者这样缩短:

exports

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