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

使用undici构建REST API时遇TypeError: fetch failed错误的排查

解决Undici中TypeError: fetch failed的问题

结合你给出的配置信息和场景,下面是几个针对性的排查方向和解决方法:

  • 检查MockAgent的拦截规则是否匹配请求
    你测试用的MockAgent必须精准匹配实际请求的URL和方法。从你的配置看,最终请求的是https://test.ca/的GET请求,要确保MockAgent的拦截规则完全对应:

    const { MockAgent } = require('undici');
    const agent = new MockAgent();
    // 绑定对应域名的mock池
    const mockPool = agent.get('https://test.ca');
    // 拦截根路径的GET请求
    mockPool.intercept({ path: '/', method: 'GET' }).reply(200, { data: 'test' });
    

    要是拦截规则里的path、method或者域名和实际请求不匹配,MockAgent就无法拦截请求,进而触发fetch failed错误。

  • 排查OAuth认证逻辑的干扰
    你的请求封装包含OAuth认证,检查这部分代码是否修改了请求配置:

    • 有没有误覆盖prefixUrl或path参数,导致最终请求的URL错误
    • 认证头是否正确生成,比如Authorization头的格式是不是Bearer <token>,有没有漏掉token内容
      可以在请求发送前打印完整的请求参数,确认url、headers等信息是否符合预期。
  • 验证Undici版本的API兼容性
    不同版本的Undici对MockAgent的API要求可能不同,比如部分新版本中MockAgent.get()只接受纯域名(不能带路径),如果你的写法不符合当前版本要求,也会导致请求失败。可以核对你使用的Undici版本对应的官方文档,确认MockAgent的用法是否正确。

  • 非测试环境:检查目标地址的可达性
    如果是生产或开发环境出现这个错误,先用curl测试目标地址:

    curl -v https://test.ca/
    

    查看是否存在网络不通、SSL证书无效、服务器返回错误码等情况,这些都会导致Undici抛出fetch failed错误。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.25 06:24:22