为什么分配会话变量不起作用? Node.js

Why assigning a session variable isn't working? Node.js

我正在尝试构建一个简单的登录系统,但是当我尝试分配会话时出现此错误

Cannot set property 'user' of undefined

但是这是我的代码:

app.use(session({
secret: 'keyboard cat',
resave: false,
saveUninitialized: true,}))

这是登录控制器:

    const loginModel = require('../model/loginModel');
    module.exports = {
    login : async function(req,res){
        try {
        const query = await loginModel.login(req.body.email,req.body.password);
        if(query != null){
            req.session.user = query;
            res.status(200).json(req.session.user);
        }else{
            res.status(401).json({error : true});
        }
        } catch (error) {
            console.error(error.message);
            res.status(500).send('something went wrong');
        }
        
    }
}

注意:登录模型 100% 有效并且它从数据库中检索用户

嗯,会话中间件无法正常工作,因为根据您收到的错误,req.session 似乎不存在。以下是一些可能的情况:

  1. 您的会话中间件未正确获取运行。

  2. 您的会话中间件 运行 在您尝试使用 req.session 的路由之后。它必须是 运行 之前,因为该中间件是创建 req.session 对象并根据会话 cookie 加载其数据的东西。

  3. 根据这段代码,如果您将错误的 req 参数传递给 login(req, res) 方法,您也可能会遇到此错误,因此也值得检查一下。

如果不查看更多代码,我们无法具体看出问题所在。