Node / Express应用程序使用connect-flash时无法获取Flash消息

当用户成功login到我的应用程序时,我正尝试通过连接闪光灯呈现Flash消息。

我可以控制台登出的消息,但他们似乎并没有得到渲染客户端。

不过,我知道客户端没有什么错,因为当我在路由中用一个简单的stringreplace了req.flash[0] ,比如'You have successfully login!' 那么消息确实出现。

护照configuration:

 // Local login Strategy passport.use('local-login', new LocalStrategy( { usernameField: 'email', passwordField: 'password', passReqToCallback: true }, (req, email, password, done) => { User.findOne({ 'local.email': email }) .then(user => { if (!user) return done(null, false); user.validPassword(password, (err, res) => { if (err) return done(err); if (!res) return done(null, false); done(null, user, req.flash('success', 'Login Successful!')); }); }) .catch(err => done(err)); } )); 

路线:

 app.post( '/api/login', passport.authenticate('local-login'), (req, res) => { console.log(req.flash('success')); const user = { user: req.user, msg: req.flash('success')[0] // Works when I replace with 'You have successfully logged in' }; res.send(user); } ); 

服务器:

 const express = require('express'); const bodyParser = require('body-parser'); const mongoose = require('mongoose'); const passport = require('passport'); const flash = require('connect-flash'); const cookieParser = require('cookie-parser'); const cookieSession = require('cookie-session'); const keys = require('./config/keys'); require('./models/User'); require('./services/passport'); mongoose.connect(keys.mongoURI); const app = express(); app.use(bodyParser.json()); app.use(cookieParser()); app.use(flash()); app.use( cookieSession({ maxAge: 30 * 24 * 60 * 60 * 1000, keys: [keys.cookieKey] }) ); app.use(passport.initialize()); app.use(passport.session()); require('./routes/authRoutes')(app); app.get('/', (req, res) => { res.json({ message: 'hello' }); }); if (process.env.NODE_ENV === 'production') { app.use(express.static('client/build')); const path = require('path'); app.get('/', (req, res) => { res.sendFile(path.resolve(__dirname, 'client', 'build', 'index.html')); }); } const PORT = process.env.PORT || 5000; app.listen(PORT, () => console.log('Working')); 

奇怪的问题,但console.log(req.flash('success')调用console.log(req.flash('success')之前将其合并到响应实际上使它失败。一旦我删除控制台日志行开始工作。

不知道为什么这是 – 不知道这是为什么,如果任何人有任何想法很想知道。