节点 - connect-flash 不适用于重定向
Node - connect-flash not working on redirect
我 运行 遇到了 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
});
})
console.log
---in error route
[ { class: 'alert-danger', message: 'TEST' } ]
error.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
});
})
这可能很简单,但我不知道它是什么。
好的,经过一些实验和纯属偶然,我发现 console.log 显然清除了闪光灯!!!!
我希望这对遇到此问题的任何人有所帮助。
我知道你已经找到了解决办法,但对于遇到同样问题的人来说,问题实际上是当你使用 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'));
您会收到与此类似的输出:
[]
[]
检查您使用的快递版本。我在使用 express 4.x.x 和 connect-flash 时遇到了同样的问题。 Connect-flash 与 express 3.x.x 一起工作,Connect-flash-plus 与 express 4.x.x 一起工作。
我 运行 遇到了 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
});
})
console.log
---in error route
[ { class: 'alert-danger', message: 'TEST' } ]
error.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
});
})
这可能很简单,但我不知道它是什么。
好的,经过一些实验和纯属偶然,我发现 console.log 显然清除了闪光灯!!!!
我希望这对遇到此问题的任何人有所帮助。
我知道你已经找到了解决办法,但对于遇到同样问题的人来说,问题实际上是当你使用 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'));
您会收到与此类似的输出:
[]
[]
检查您使用的快递版本。我在使用 express 4.x.x 和 connect-flash 时遇到了同样的问题。 Connect-flash 与 express 3.x.x 一起工作,Connect-flash-plus 与 express 4.x.x 一起工作。