简体   繁体   中英

TypeError: Cannot set property 'user' of undefined at

I am getting the following errors on my website when I load it on an online server. I using express 3.x, the first url don´t has probems, but i do login the error is

TypeError: Cannot set property 'user' of undefined at

My code is:

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

Please state software version your issue is occurring.sometimes version is the matter and I guess this time as well.

first of all, the error is happening all because of req.session.user = req.body.username;

which means you do not have properly set

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

Though above code should work.So I assume you are using express 4.0 and keep using server.configure function. Since app.configure in express version 3.x was removed in express version 4.0,The code above would not work in express 4.0

so simply remove the function and make it something like...

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');

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM