TypeError:Object#<IncomingMessage>没有方法'flash'

在使用Node.js和Express时出现以下错误。 这是我的版本:

Node : v0.8.8 Express: 3.0.0rc3 

尝试访问该页面时,获得以下错误:

 TypeError: Object #<IncomingMessage> has no method 'flash' at routes (/Users/nblavoie/Desktop/HotPie/HotPie/apps/authentication/routes.js:23:8) 

我试图删除app.use(app.router); 从app.js没有成功。 这是导致错误的代码。 请参阅req.flash行。

 app.post('/sessions', function(req, res) { if(req.body.user == 'piechief' && req.body.password == '12345') { req.session.currentUser = req.body.user; req.flash('info', "You're logged in as #{req.session.currentUser}"); res.redirect("/login"); return; } else { req.flash('error', "Those credentials were incorrect. Try again."); res.redirect("/login"); return; } }); 

这里是我的app.js有趣的部分:

 var app = express(); app.configure(function(){ app.set('port', process.env.PORT || 3000); app.set('views', __dirname + '/views'); app.set('view engine', 'jade'); app.use(express.favicon()); app.use(express.logger('dev')); app.use(express.bodyParser()); app.use(express.methodOverride()); app.use(express.cookieParser()); app.use(express.session({ secret: "DBBD6BE563419EDB0E5CBD228E603D4AD232CE05434B4FA95C6908B64EA515C3", store: new RedisStore({ host: "127.0.0.1", port: "6379", db: "mydb" }) })); app.use(app.router); app.use(express.static(path.join(__dirname, '/public'))); }); 

有什么想法吗? 我在Express'flash文档中采取了一个懒惰,我看不出我做错了什么。

这为我解决了

https://github.com/jaredhanson/passport/issues/61

现在我的护照app.configure如下所示:

 app.configure(function (){ app.use(express.cookieParser('keyboard cat')); app.use(express.session({ cookie: { maxAge: 60000 }})); app.use(passport.initialize()); app.use(passport.session()); app.use(flash()); }) 

req.flash 已从3.0中删除 :

  • req.flash() (只使用会话: req.session.messages = ['foo']或类似的)
  • connect-flash可以用作中间件来提供req.flash()