gpt4 book ai didi

javascript - 无法弄清楚为什么我不断收到 [ERR_HTTP_HEADERS_SENT] 错误

转载 作者:行者123 更新时间:2023-12-02 22:48:05 24 4
gpt4 key购买 nike

错误 [ERR_HTTP_HEADERS_SENT]:将 header 发送到客户端后无法设置 header

我看过有关同一问题的其他帖子,但我无法弄清楚如何解决我的问题。我有处理发布请求的代码,如下所示:

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 语句为 false 时,我才会收到错误。为什么会这样?

最佳答案

您正在 for 循环内返回,因此每次都会发送

修改您的代码,如下所示

router.post('/', function(req, res) {
var movies = JSON.parse(fs.readFileSync('movies.json'));
var title = req.body.title;
var counter =0;
var arr = [];
movies.forEach(function(movie) {
if (title == movie.title) {
arr.push({ watched: false , movieId:id})
} else {
arr.push({ watched: true , movieId:id})
}
counter++;
if(counter == movies.length){
return res.send({'movie':arr});
}
});
});

关于javascript - 无法弄清楚为什么我不断收到 [ERR_HTTP_HEADERS_SENT] 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58297431/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com