为什么分配会话变量不是';不行吗?Node.js

为什么分配会话变量不是';不行吗?Node.js,node.js,session,Node.js,Session,我试图建立一个简单的登录系统,但当我尝试asign会话时,我得到了这个错误 无法设置未定义的属性“user” 但这是我的代码: app.use(session({ secret: 'keyboard cat', resave: false, saveUninitialized: true,})) 这是登录控制器: const loginModel = require('../model/loginModel'); module.exports = { login : a

我试图建立一个简单的登录系统,但当我尝试asign会话时,我得到了这个错误

无法设置未定义的属性“user”

但这是我的代码:

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
似乎不存在。以下是一些可能的情况:

  • 您的会话中间件未正常运行

  • 您的会话中间件正在尝试使用
    req.session
    的路由之后运行。它必须在之前运行,因为中间件创建了
    req.session
    对象,并基于会话cookie加载其数据

  • 基于此代码,如果将错误的
    req
    参数传递给
    login(req,res)
    方法,也可能会出现此错误,因此值得检查


  • 如果看不到更多的代码,我们就看不到具体的问题所在。

    在发出此请求之前,您是否正在运行
    express session
    中间件?这是创建
    req.session
    对象并将其绑定到cookie所必需的。您的意思是运行第一个代码?是的,我正在使用nodemonWell运行第一个代码,会话中间件出现一些问题,因为根据您收到的错误,
    req.session
    似乎不存在。路由的声明顺序是否正确(首先是会话中间件)。也许您应该向我们展示更多的代码,这样我们就可以看到这两个东西之间的相对位置。也可能是您向
    login()
    函数传递了错误的参数。如果看不到更多的代码,我们就看不到问题所在。好的,我将添加更多Core。我发现错误,我在错误的文件xD中调用了中间件,我应该在index.js中调用它。谢谢,我的friendsession中间件没有正常运行。