fetch failed / timeout error 获取外部URL失败

无所谓的十六进制 / 2024-03-15 / 原文

fetch failed / Timeout Error / UND_ERR_CONNECT_TIMEOUT

问题现象

TypeError: fetch failed
    at Object.fetch (node:internal/deps/undici/undici:11600:11)
    at processTicksAndRejections (node:internal/process/task_queues:95:5)
    at async Object.searchPodcast (/Users/code/movie-review/backend/src/movie-api.ts:41:32)
    at async /Users/leah/code/movie-review/backend/src/index.ts:27:21 {
  cause: ConnectTimeoutError: Connect Timeout Error
      at onConnectTimeout (node:internal/deps/undici/undici:8544:28)
      at node:internal/deps/undici/undici:8502:50
      at Immediate._onImmediate (node:internal/deps/undici/undici:8533:13)
      at processImmediate (node:internal/timers:478:21) {
    code: 'UND_ERR_CONNECT_TIMEOUT'
  }
}

想获取一个API的信息,再保存成json形式,用于之后调用,但是一直在fetch这一步骤报错。

分析过程

获取这个http://www.omdbapi.com API的时候没出问题,但是换了一个https的API就有问题了。

搜索到在node的GitHub issue里面提到跟node版本有关系,20.x.x的版本有问题,换了18.x.x的还是有同样问题,排除node版本原因。

解决方法

在电脑设置里面找到dns设置,改成8.8.8.8后成功了。

why #todo

参考链接

https://github.com/nodejs/node/issues/46375