Express: req.flash () requires sessions

I'm having problems connecting flash-flash, the error message I get:

'Error: req.flash () requires sessions'

I saw that this might be due to ordering the application, but I'm not sure if that is the case.

App.js:

var express = require('express'); var path = require('path'); var favicon = require('serve-favicon'); var logger = require('morgan'); var cookieParser = require('cookie-parser'); var bodyParser = require('body-parser'); var session = require('express-session'); var flash = require('connect-flash'); var passport = require('passport'); var app = express(); app.use(logger('dev')); app.use(bodyParser.json()); app.use(bodyParser.urlencoded({ extended: false })); app.use(cookieParser()); app.use(express.static(path.join(__dirname, 'public'))); app.use(session({secret: '{secret}', name: 'session_id', saveUninitialized: true, resave: true})); app.use(passport.initialize()); app.use(passport.session()); app.use(flash()); 

Routes, etc. below

flash generation code:

 passport.authenticate('local', { failureRedirect: '/login', successRedirect: '/', failureFlash: true}) 
+5
source share
2 answers

The problem was how my view got rendered (using req.flash data)

Change this:

 loginShow: function(req, res){ res.render('login', { message: req.flash }); } 

For this:

 loginShow: function(req, res){ res.render('login', { message: req.flash() }); } 

The bug was fixed and the connect-flash function worked.

+3
source

Does your redis server work? Try

 redis-server 

This solved the problem for me.

+4
source

All Articles