我正在使用快递:
// check user session
var user = req.user;
if(!user)
res.redirect('/login');
res.render('report/search');
我收到此错误:
Error: Can't set headers after they are sent.
重定向后如何停止?
答案 0 :(得分:0)
在expressjs中,responose
谎言redirect
,render
,json
等的任何方法都不会停止执行请求处理程序并执行直到结束。您可以在那里使用任何代码,但它可以正常运行,但您无法将响应发送给客户两次,这就是您收到此错误的原因。
要解决此问题,您需要使用return
if-else
子句:
var user = req.user;
if(!user)
return res.redirect('/login');
return res.render('report/search'); //this return is not required, but it's still good to have it there
或者:
var user = req.user;
if(!user) {
res.redirect('/login');
}
else {
res.render('report/search');
}