提问者:小点点

当Module.Exporting in NODE时函数不工作,为什么?


[可能是都柏林人]

我的users.js文件中有以下函数,它可以正常工作。 请参见下面的代码:

const redirectLogin = (req, res, next) =>{
    if(!req.session.userId) { 
        return res.redirect('/user_login');
    }else { 
        next();
    }
};
const redirectHome = (req, res, next) =>{
    if(req.session.userId) { 
        return res.redirect('/dashboard');
    }else { 
        next(); 
    }
};

当我尝试导出这两个函数以便可以在其他文件(例如app.js)中使用它们时,它返回以下错误:

//users.js
module.exports = {
    redirectLogin: redirectLogin(),
    redirectHome: redirectHome()
}; //ERROR IS HERE

//and in
//app.js
const usersRouter = require('./routes/users.js'); //Import and Use : Users Router
app.use(usersRouter);
users.redirectLogin();
TypeError: Cannot read property 'session' of undefined
    at redirectLogin (C:\inetpub\wwwroot\mymindmapper\routes\users.js:38:13)
    at Object.<anonymous> (C:\inetpub\wwwroot\mymindmapper\routes\users.js:343:20)
    at Module._compile (internal/modules/cjs/loader.js:1138:30)
    at Object.Module._extensions..js (internal/modules/cjs/loader.js:1158:10)
    at Module.load (internal/modules/cjs/loader.js:986:32)
    at Function.Module._load (internal/modules/cjs/loader.js:879:14)
    at Module.require (internal/modules/cjs/loader.js:1026:19)
    at require (internal/modules/cjs/helpers.js:72:18)
    at Object.<anonymous> (C:\inetpub\wwwroot\mymindmapper\app.js:46:21)
    at Module._compile (internal/modules/cjs/loader.js:1138:30)
[nodemon] app crashed - waiting for file changes before starting...

我搞不懂为什么会发生这种事。 请让我知道!


共1个答案

匿名用户

您正在执行函数,而不仅仅是绑定。 因此您的模块。导出将

module.exports = {
    redirectLogin: redirectLogin,
    redirectHome: redirectHome,
}; 

速记

module.exports = {
    redirectLogin,
    redirectHome,
};