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});
});
Тогда я получу ошибку только тогда, когдаутверждение неверноПочему это так?