11

I'm new to node and I'm pretty sure I've set up the middle ware and express to use flash messaging however I still get the error:

Error: req.flash() requires sessions

Setup

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

What else can I do to make sure I have everything set up correctly and get it working?

Jamie Hutber
  • 26,790
  • 46
  • 179
  • 291
  • 1
    https://github.com/jaredhanson/connect-flash#express-3x. You need to use session middleware, thus the error message `req.flash() requires sessions` – andars May 31 '15 at 22:40

4 Answers4

15

From the readme (emphasis mine):

Flash messages are stored in the session. First, setup sessions as usual by enabling cookieParser and session middleware. Then, use flash middleware provided by connect-flash.

Using express-sessions with express 4, cookieParser is no longer required.

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

//...


app.use(session({ cookie: { maxAge: 60000 }, 
                  secret: 'woot',
                  resave: false, 
                  saveUninitialized: false}));
andars
  • 1,384
  • 7
  • 12
3

In my case the issue was that Redis was not listening. I found that out by enabling the logErrors property:

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

Which resulted in messages like these:

Warning: connect-redis reported a client error: Error: Redis connection to localhost:6379 failed - connect ECONNREFUSED 127.0.0.1:6379
beeman
  • 574
  • 5
  • 9
2

Please check mongodb connections. there may be an mongo error like "mongoError: Topology was destroyed". To fix this issue, check here

Oni
  • 1,093
  • 11
  • 16
  • This helped me fix the same error message caused by a misconfigured (wrong host name) using connect-redis session – Crisp Oct 22 '18 at 07:15
1

i was having these issues and I solve them by respecting the cascading

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