错误:req.flash()需要会话

时间:2015-05-31 22:20:19

标签: node.js flash express

我是节点新手,我很确定我已经设置了中间件并表示使用flash消息,但我仍然收到错误:

Error: req.flash() requires sessions

设置

//express.js
     var flash = require('connect-flash')

     module.exports = function (app, config, passport) {
         app.use(flash());
     };

//route js
     exports.loginGet = function (req, res) {
       res.render('users/login', {
         title: 'Login',
         message: req.flash('error') //error in question
       });
     };

我还能做些什么来确保我已正确设置所有内容并使其正常工作?

4 个答案:

答案 0 :(得分:11)

来自readme(强调我的):

  

Flash消息存储在会话中。 首先,通过启用cookieParser和会话中间件来设置会话。然后,使用connect-flash提供的flash中间件。

express-sessions与快递4一起使用,不再需要cookieParser

var session = require('express-session');

//...


app.use(session({ cookie: { maxAge: 60000 }, 
                  secret: 'woot',
                  resave: false, 
                  saveUninitialized: false}));

答案 1 :(得分:2)

请检查mongodb连接。可能存在mongo错误,例如“ mongoError:拓扑已被破坏”。 要解决此问题,请选中here

答案 2 :(得分:0)

就我而言,问题是Redis没有在听。通过启用logErrors属性,我发现了这一点:

new RedisStore({
  host: 'localhost',
  port: '6379',
  logErrors: true,
});

导致以下消息的原因:

Warning: connect-redis reported a client error: Error: Redis connection to localhost:6379 failed - connect ECONNREFUSED 127.0.0.1:6379

答案 3 :(得分:0)

我遇到了这些问题,我通过尊重级联来解决这些问题

app.use(passport.initialize());
app.use(passport.session());
//SESSION FLASH
app.use(flash());