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

Node.js Express报错ERR_HTTP_HEADERS_SENT:setInterval致响应崩溃

问题:Express中使用setInterval延迟响应出现ERR_HTTP_HEADERS_SENT错误

为了测试前端功能,想延迟接口响应,于是在Express的POST路由里把res传入setInterval回调,代码如下:

router.post('/survey', userMiddleware.isLoggedIn, (req, res ,next) => {
  setInterval(() => {
     res.status(200).send({
      message: 'Upload success!'
    });
  }, 3000);
});

运行后抛出以下错误:

node:_http_outgoing:576
    throw new ERR_HTTP_HEADERS_SENT('set');
    ^

Error [ERR_HTTP_HEADERS_SENT]: Cannot set headers after they are sent to the client
    at new NodeError (node:internal/errors:371:5)
    at ServerResponse.setHeader (node:_http_outgoing:576:11)
    at ServerResponse.header (/node/node-express-jwt-test/node_modules/express/lib/response.js:794:10)
    at ServerResponse.send (/node/node-express-jwt-test/node_modules/express/lib/response.js:174:12)
    at ServerResponse.json (/node/node-express-jwt-test/node_modules/express/lib/response.js:278:15)
    at ServerResponse.send (/node/node-express-jwt-test/node_modules/express/lib/response.js:162:21)
    at Timeout._onTimeout (/node/node-express-jwt-test/routes/router.js:83:22)
    at listOnTimeout (node:internal/timers:559:17)
    at processTimers (node:internal/timers:502:7) {
  code: 'ERR_HTTP_HEADERS_SENT'
}

Node.js v17.5.0
[nodemon] app crashed - waiting for file changes before starting...

原因分析

  • setInterval的特性是每隔指定时间重复执行回调,这里就是每3秒调用一次res.send()
  • HTTP协议的规则是一个请求对应一个响应,第一次调用res.send()时,已经把响应头部和内容发送给了客户端,这个请求的响应流程已经结束
  • 当setInterval第二次执行回调,再次调用res.send()时,Express会尝试再次设置HTTP头部,但此时响应已经关闭,直接触发ERR_HTTP_HEADERS_SENT错误

解决方法

如果只是需要延迟一次响应,把setInterval换成setTimeout即可——它只会执行一次回调,符合HTTP请求-响应的规则:

router.post('/survey', userMiddleware.isLoggedIn, (req, res ,next) => {
  setTimeout(() => {
     res.status(200).send({
      message: 'Upload success!'
    });
  }, 3000);
});

额外注意:

  • 确保路由处理函数里没有其他地方提前发送响应(比如在定时器之外调用res.send、next等)
  • 如果确实需要给客户端发送多次消息,普通HTTP接口做不到,得用WebSocket这类支持双向持久通信的协议

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.19 14:05:23