解决Express 的 Error: Can't set headers after they are sent.
程序员文章站
2022-06-01 09:27:40
...
Error: Can't set headers after they are sent.
导致问题是 res.send
信息一直在发送
解决:
使用response.end()发送响应时,在此前加一个return,即return response.end(),类似的response.send()等函数也要加return,而且是所有的地方都要加,即使是a请求的响应没加return,当b请求到来时,也会报错。
例:
app.use(function (err, req, res, next) {
return res.status(err.status || 500).send({
message: err.message,
error: {},
title: 'error'
});
});
router.post('/login', (req, res) => {
var sess = req.session;
var user = findUser(req.body.name, req.body.pwd);
console.log(user);
if (user) {
req.session.regenerate(function(err) {
if (err) {
return res.json({ code: 2, msg: '登录失败' });
}
req.session.loginUser = user.name;
return res.json({ code: 0, msg: '登录成功' });
});
} else {
return res.json({ code: 1, msg: '账号或密码错误' });
}
});
上一篇: 基于express的简单留言板