使用app.use(flash())''TypeError:req.flash不是函数';仍然没有工作

时间:2016-02-24 13:23:11

标签: javascript node.js express passport.js

我的routes.js上的错误:

app.get('/login', function(req, res) {
    // render the page and pass in any flash data if it exists
    res.render('login.html', { message:  req.flash('loginMessage') }); 
});

req.flash上更具体。

app.use(logger('dev'));
app.use(bodyParser.json());
app.use(bodyParser.urlencoded({ extended: false }));
app.use(cookieParser());
app.use(require('less-middleware')(path.join(__dirname, 'public')));
app.use(express.static(path.join(__dirname, 'public')));

//PASSPORT AUTH
app.use(flash()); // use connect-flash for flash messages stored in session
app.use(session({ secret: 'ilovescotchscotchyscotchscotch' })); // session secret
app.use(passport.initialize());
app.use(passport.session()); // persistent login sessions

如你所见,我有app.use(flash());这是其他案件中最常见的错误。

Flash初始化为:

var flash = require('connect-flash');

我真的不知道问题出在哪里。

编辑:错误页面:

error

1 个答案:

答案 0 :(得分:1)

这应该有效。您是否尝试创建最小的测试用例?您的问题可能是代码中的其他位置。也许app.use(flash())没有运行?

var flash = require('connect-flash');
var express = require('express')
var session = require('express-session')
var app = express();

app.use(flash());
app.use(session({ secret: 'keyboard cat' }))

app.get('/flash', function(req, res){
  req.flash('info', 'Flash is back!')
  res.redirect('/');
});

app.get('/', function(req, res){
  res.send(req.flash('info'));
});

app.listen(3000);