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

使用Express框架在setInterval内响应请求出现ERR_HTTP_HEADERS_SENT错误

ERR_HTTP_HEADERS_SENT 错误原因及修复

错误原因

你遇到的ERR_HTTP_HEADERS_SENT错误,本质是同一个HTTP请求中被多次尝试发送响应。

你的代码里使用了setInterval,这个API的作用是每隔指定时间重复执行回调函数。第一次等待5秒后,res.send("hello")会正常把响应发送给客户端,此时该请求的响应流程已经完成——响应头和响应体都已经发送给客户端,连接的状态也已结束。但5秒后setInterval会再次触发回调,这时再调用res.send,Node.js会尝试再次为这个已经完成的请求设置响应头、发送响应,这显然不符合HTTP协议的规则,因此抛出错误。

另外,setInterval如果不手动清除,会持续在后台执行,即便请求已经处理完毕,这还会造成不必要的内存消耗。

修复方案

你需要的是延迟5秒后发送一次响应,而非重复发送,所以应该把setInterval替换为setTimeout(仅执行一次回调):

app.get("/",(req,res)=>{
    setTimeout(function(){
        res.status(200);
        res.send("hello");
    },5000)
})

setTimeout只会在5秒后执行一次回调,发送完响应后就完成了该请求的处理,不会再触发后续的响应操作,自然也就不会出现重复发送响应的错误。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.03 18:15:40