我被connect-flash卡住了,所有的flash消息都不会加载到页面上,除非我刷新几次,我不确定为什么。
我创建了一个小项目来测试connect-flash,它的结果是一样的,请检查下面的代码:
App.js代码:
const express = require('express');
const path = require('path');
const favicon = require('serve-favicon');
const logger = require('morgan');
const cookieParser = require('cookie-parser');
const bodyParser = require('body-parser');
const session = require('express-session');
const flash = require('connect-flash');
const app = express();
// view engine setup
app.set('views', path.join(__dirname, 'views'));
app.set('view engine', 'hbs');
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: 'keyboard cat',
resave: false,
saveUninitialized: true
}));
//using flash
app.use(flash());
app.use(function(req, res, next){
res.locals.success = req.flash('success');
res.locals.error = req.flash('error');
next();
});
//flash route
app.get('/flash', (req, res) =>{
req.flash("success", "CONNECT FLASH TEST");
res.render('flash');
});
const port = process.env.PORT || 5000;
app.listen(port, () =>{
console.log(`App has started on port ${port}`);
})下面是用于呈现flash消息的flash.hbs页面的代码:
<h1>Flash page</h1>
{{#if success}}
<h2>{{success}}</h2>
{{/if}}非常感谢高级,任何帮助都将是非常感谢的家伙。
发布于 2018-04-28 19:44:15
它们会在一次刷新后渲染吗?这就是他们应该如何工作的。
“闪光消息”用于将消息传递到下一个请求,大多数情况下唯一的原因是post-request-get pattern。如果您只想在同一页上向用户显示一条消息,而不执行重定向,则不需要库。只需将消息作为数据传递给模板。
发布于 2019-10-09 12:40:47
当我浏览the docs of express-session的时候,我正在滚动我自己的新版本的req.flash,偶然发现了这个宝石:
注意:从1.5.0版本开始,不再需要使用cookie解析器中间件来使此模块工作。这个模块现在可以直接在req/res上读写cookie了。如果此模块和cookie解析器之间的密码不同,则使用cookie解析器可能会导致问题。
看,我有这些台词:
app.use(require('cookie-parser')())
const session = require('express-session')
const MongoStore = require('connect-mongo')(session)
app.use(session({
secret: process.env.SESSION_STORE_SECRET,
store: new MongoStore({mongooseConnection: mongoose.connection}),
maxAge: 10*365*24*60*60*1000, // set to 10 years
resave: false,
saveUninitialized: false
}))一旦我将cookie-parser行更改为:
app.use(require('cookie-parser')(process.env.SESSION_STORE_SECRET))`它完全按照预期工作!
(对于一些人来说,答案将是完全删除cookie-parser。)
https://stackoverflow.com/questions/50076150
复制相似问题