0

我在使用 connect-flash 时遇到了一些奇怪的问题,我已经以完全相同的方式在其他项目中使用了它,并且效果很好,这就是我所拥有的:

一些路线

if (err) {
    req.flash('message', [{
      class: 'alert-danger',
      message: 'TEST'
    }]);

    res.redirect('/error');
}

错误路线

router.get('/error', function (req, res, next) {
  console.log('---in error route')
  console.log(req.flash('message'));

 res.render('error', {
    message: req.flash('message'),
    layout: layout
  });
})

控制台日志

---in error route
[ { class: 'alert-danger', message: 'TEST' } ]

错误.hbs

{{#if message}} 
    {{#each message}}
        <div class="{{this.class}}">{{this.message}}</div>
    {{/each}} 
{{/if}}

显然它在那里,但没有打印输出,如果我将确切的 smae 内容从第一条路径复制到错误,它会显示(这对我不起作用,但只是用于测试以确保 hbs 模板逻辑有效):

router.get('/error', function (req, res, next) {

  req.flash('message', [{
    class: 'alert-danger',
    message: 'TEST'
  }]);
  res.render('error', {
    message: req.flash('message'),
    layout: layout
  });
})

这可能很简单,但我不知道它是什么。

4

3 回答 3

7

好的,经过一些实验,纯属偶然,我发现console.log 显然清除了闪存!!!!

我希望这对遇到此问题的任何人有所帮助。

于 2017-01-09T23:57:11.590 回答
4

我知道您已经找到了解决方案,但是对于遇到相同问题的任何人来说,实际问题是当您使用req.flash()检索闪存消息时,它实际上会在检索后删除该消息。

如果你这样做了:

console.log(req.flash('message'));
console.log(req.flash('message'));

您将收到与此输出类似的内容:

[ 'TEST' ] 
[]

这是因为第一次调用req.flash('message')检索 删除了给定的消息。

此外,您是否这样做过:

req.flash('message');
console.log(req.flash('message'));
console.log(req.flash('message'));

您将收到与此类似的输出:

[]
[]
于 2018-04-02T20:40:26.377 回答
0

检查您使用的 express 版本。我遇到了与使用带有连接闪存的 express 4.xx 相同的问题。Connect-flash 适用于 express 3.xx,Connect-flash-plus 适用于 express 4.xx

于 2018-06-29T16:57:18.107 回答