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

TypeScript按日期范围过滤数据时触发ERR_HTTP_HEADERS_SENT错误如何解决

问题原因
  • 核心报错原因:ERR_HTTP_HEADERS_SENT是Express框架的常见错误,触发逻辑是服务端已经向客户端发送过响应后,再次调用res.send/res.json等响应方法,尝试重复设置响应头。
  • 代码的核心问题是把res.send写进了Array.filter的回调函数里:filter会遍历数组中的每一个元素,遍历第一个元素时就已经执行res.send把响应返回给了客户端,后续遍历其他元素时再次调用res.send就触发了该报错。
  • 额外逻辑错误:
    1. after变量错误赋值为req.query.before,正常应该取req.query.after参数
    2. req.query中获取的参数都是字符串类型,需要手动转为Date对象才能做日期比较
修正后代码
var before = req.query.before ? new Date(req.query.before) : undefined;
var after = req.query.after ? new Date(req.query.after) : undefined;

if(before && after){
  var filteredData = tempData.filter(function(t){
    const createTime = new Date(t.creationTime);
    // filter回调内仅做条件判断,不调用响应方法
    return createTime >= after && createTime <= before;      
  });
  // 遍历结束拿到完整筛选结果后,再统一返回响应
  res.send(filteredData);
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.07 09:09:04