我的登录页面上有此代码
//get login
router.get('/login', function(req, res, next) {
const flashMessages =
res.locals.getMessages( );
if( flashMessages.error ){
res.render( 'login', {
showErrors: true,
errors: flashMessages.error
});
}else{
res.render( 'login' )
}
//console.log( 'flash', flashMessages);
res.render('login', { title: 'LOG IN'});
});
有时,当我尝试获取登录页面时,有时会看到空白页面,或者有时,当我尝试登录时,我停留在登录页面而不是仪表板中。有时,我看不到标题中的值。当我检查日志(nodemon)时,我看到此错误
Error: /var/www/html/akahline/views/error.hbs: Can't set headers after they are sent. at validateHeader (_http_outgoing.js:491:11) at ServerResponse.setHeader (_http_outgoing.js:498:3)
答案 0 :(得分:0)
您要发送两次渲染。最好的方法是像这样在flashMessages.error
之后返回
//get login
router.get('/login', function(req, res, next) {
const flashMessages = res.locals.getMessages( );
if( flashMessages.error ){
return res.render( 'login', {
showErrors: true,
errors: flashMessages.error
})
}
//console.log( 'flash', flashMessages);
res.render('login', { title: 'LOG IN'});
});
如果使用showErrors
登录时出错,则返回此错误,如果没有使用您的title
登录则返回此错误