fetch外部api failed显示timeout error解决方法

问题现象

1
2
3
4
5
6
7
8
9
10
11
12
13
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后成功了。

后续

需要了解一下DNS设置的影响。

参考链接

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


fetch外部api failed显示timeout error解决方法
https://hexwhat.top/2024/03/15/fetch-api-failed-timeout-error/
作者
Wynn
发布于
2024年3月15日
许可协议