You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

发送响应时触发ERR_HTTP_HEADERS_SENT错误,请问成因是什么

ERR_HTTP_HEADERS_SENT错误的成因

这个错误的核心是重复发送HTTP响应,具体到你的代码逻辑:

  1. 当你调用res.json([{"message": ${question}}])时,Express已经完成了整个响应流程:它会自动设置Content-Type: application/json响应头,把数据序列化为JSON字符串,然后将完整的响应发送给客户端。此时客户端已经收到响应,HTTP连接的头信息已经发送完毕,无法再修改或重复发送。
  2. 你把res.json()的返回值赋值给response并return response,而Express的规则是:如果请求处理器返回了值,框架会尝试基于这个值再次生成并发送响应。这就导致框架试图再次设置响应头、发送响应,但此时响应已经发送过了,直接触发「Cannot set headers after they are sent to the client」错误。

从控制台输出也能佐证:GET /question 200说明第一次响应已经成功发送,之后的错误就是因为框架尝试发送第二次响应导致的。

内容的提问来源于stack exchange,提问作者Manu Chadha

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.14 21:55:22