【发布时间】:2019-10-09 05:12:26
【问题描述】:
Error [ERR_HTTP_HEADERS_SENT]: Cannot set headers after they are sent to the client
我看过其他关于同一问题的帖子,但我无法弄清楚如何解决我的问题。我有代码处理这样的发布请求:
router.post('/', function(req, res) {
var movies = JSON.parse(fs.readFileSync('movies.json'));
var title = req.body.title;
movies.forEach(function(movie) {
if (title == movie.title) {
return res.render('movie', { watched: false });
} else {
return res.render('movie', { watched: true });
}
});
});
我知道问题是由于 res.render() 出现两次,但即使有 return 声明,它仍然给我同样的错误,所以我很难理解它是如何被发送两次的。由于return 关键字,它不应该只发送一次吗?
另外,如果我像这样修改我的代码:
router.post('/', function(req, res) {
var movies = JSON.parse(fs.readFileSync('movies.json'));
var title = req.body.title;
movies.forEach(function(movie) {
if (title == movie.title) {
return res.render('movie', { watched: false });
}
});
res.render('movie', { watched: true});
});
然后我只在 if 语句为假时收到错误。为什么会这样?
【问题讨论】:
标签: javascript node.js express http-headers