node.js - node js [ERR_HTTP_HEADERS_SENT]:发送到客户端后无法设置标头
问题描述
我只是写了两个类似的代码,但是只有材料可以运行,并且当我提交表单时,订单有错误“[ERR_HTTP_HEADERS_SENT]:无法设置标题后发送到客户端”
order.js
pool.getConnection(function(err,connection){
connection.query('SELECT customerid FROM order_table WHERE customerid =?', [customerid],function(err,rows){
if(err){
res.render('error',{
message:err.message,
error:err
});
}
/*
if(rows.length>=1){
res.render('operation/order',{warn:"You have already order!"});
}else{
*/
var cmd="INSERT INTO order_table(customerid,customerName,phonenumber,productid,amount,orderday,deadlineday) VALUES(?,?,?,?,?,?,?)";
connection.query(cmd,[customerid,customerName,phonenumber,productid,amount,orderday,deadlineday],function(err,result){
console.log(req.body);
if(err){
res.redirect('/order');
//return next();
}else{
res.render('operation/order_redirect');
}
});
//}
});
});
//callback(err, result);
connection.release();
});
module.exports=router;
解决方案
当您尝试发送响应时出现错误,尽管它已经发送。
如我所见,出现错误时您尚未返回状态。所以使用return
返回状态,以便下面的代码不执行。
if(err){
return res.render('error',{
message:err.message,
error:err
});
}
为什么会出现此错误:
错误“错误:发送后无法设置标头。” 表示您已经处于 Body 或 Finished 状态,但某些函数试图设置 header 或 statusCode。(查找更多)
推荐阅读
- java - 我可以定义地图吗
> 这样我就可以从地图中获取()列表而无需未经检查的强制转换? - r - glmnet / glmnetUtils:重复交叉验证
- mongodb - MongoDB 为所有文档提取一个 subItem 作为 Item
- spring - Spring WebFlux + thymeleaf: Post request redirect 获取页面返回 303 查看其他状态
- javascript - 在jQuery上将动画减慢到最后
- elasticsearch - 带有 Searchguard 的 EFK
- javascript - 如何从网页中的文本框中替换 xml 中的现有标签文本
- java - 具有泛型返回类型的覆盖方法中的参数导致覆盖失败
- c# - Asp.net 计时器作为 ref 传递给其他形式的函数在启用时不会打勾
- android-studio - 如何创建母语键盘