Express: req.flash() requires sessions
Asked Answered
O

2

8

I'm having some problems getting connect-flash to work, the error message I'm getting is:

'Error: req.flash() requires sessions'

I've seen this can be because of the ordering of the app, but I'm not sure if this is the case here.

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. are below

flash generating code:

passport.authenticate('local', { failureRedirect: '/login', successRedirect: '/', failureFlash: true})
Overcompensation answered 31/5, 2015 at 18:59 Comment(5)
so, just removing your prefix yields following question here on SO: #19168855Viviyan
I've already read that, I don't use session.destroy() anywhere. Any other ideas?Overcompensation
Passport needs flash to be configured before itself. Try putting app.use(flash()) before passportGrider
In my case the RedisStore object in the store property of the express-session was wrongly configured (wrong port).Clericalism
Same here -- didn't have Redis running the background.Josephina
O
5

The issue was with how my view was getting rendered (using req.flash data)

Changing this:

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

To this:

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

Fixed the error and causes connect-flash to act as expected.

Overcompensation answered 2/6, 2015 at 19:52 Comment(0)
C
5

Is your redis-server running? Try

redis-server

This solved the issue for me.

Clericalism answered 19/7, 2016 at 17:6 Comment(0)

© 2022 - 2024 — McMap. All rights reserved.