TypeError:无法设置属性'用户'的未定义

TypeError: Cannot set property 'user' of undefined at

本文关键字:未定义 用户 属性 设置 TypeError      更新时间:2023-09-26

当我在在线服务器上加载网站时,我的网站上出现了以下错误。我使用express 3.x,第一个url没有问题,但我确实登录了,错误是

TypeError:无法在上设置未定义的属性"user"

我的代码是:

    server.engine('html', swig.renderFile);
    server.set('view engine', 'html');
    server.set('views', './app/views');
    server.configure(function() {
        server.use(express.logger());
        server.use(express.cookieParser());
        server.use(express.bodyParser());
        server.use(express.session({
            secret: "lolcatz",
            store: new RedisStore({})
        }));
    });
    server.get('/', function (req, res){
        res.render('home');
    });
    server.get('/app', function (req, res) {
        res.render('app', { 
            user: req.session.user
        });
    });
    server.post('/log-in', function (req, res) {
        req.session.user = req.body.username;
        res.redirect('/app');
    });
    server.listen(3000);

请说明您的问题发生的软件版本。有时版本也是问题所在,我想这次也是。

首先,错误的发生完全是因为req.session.user = req.body.username;

这意味着您没有正确设置

server.use(express.session({ secret: "lolcatz", store: new RedisStore({}) }));

尽管上面的代码应该可以工作。所以我假设您使用的是express 4.0,并继续使用server.configure函数。由于express版本3.x中的app.config在express版本4.0中被删除,上述代码在express 4.0 中不起作用

所以只需删除函数,使其类似。。。

server.use(express.logger());
server.use(express.cookieParser());
server.use(express.bodyParser());
server.use(express.session({
    secret: "lolcatz",
    store: new RedisStore({})
}));
server.get('/', function (req, res){
    res.render('home');