如何在Handlebars中渲染Express flash消息实现登录错误提示
Handlebars中展示Flash错误消息的解决方法
你之前的写法不生效核心原因是:flash消息没有被注入到Handlebars模板的渲染上下文中,按以下步骤修改即可:
步骤1:添加全局中间件传递Flash消息
在app.js的flash配置之后、路由注册之前,添加如下中间件,将flash消息挂载到全局模板变量res.locals上:
//Flash app.use(flash()); // 新增:全局传递flash消息到所有模板 app.use((req, res, next) => { // 取flash中error字段的第一个值,为空则赋值为空字符串 res.locals.error = req.flash('error')[0] || ''; next(); }); //Routes app.use('/', require('./routes/index'))
如果需要同时支持成功提示等其他类型的flash消息,可以按同样规则添加:
res.locals.success = req.flash('success')[0] || '';
步骤2:模板条件渲染
你之前写的模板判断逻辑可以直接使用,无需修改:
{{#if error}} <div class="error-tip">{{error}}</div> {{/if}}
可选排查点
- 确保
express-session中间件的注册顺序永远在flash中间件之前,你当前的配置顺序是正确的 - 确保路由中
req.flash赋值后跳转的页面,对应路由不需要额外传递error参数,全局中间件已经统一处理
内容的提问来源于stack exchange,提问作者tchris
相关产品推荐
相关产品推荐

