我对 JavaScript/TypeScript 比较陌生(仍在学习),并且一直在尝试使用 fetch 和 axios 发出请求,但遇到了网络连接问题。我收到的错误是:
cause: AggregateError
at internalConnectMultiple (node:net:1102:18)
at internalConnectMultiple (node:net:1161:5)
at Timeout.internalConnectMultipleTimeout (node:net:1644:3)
at listOnTimeout (node:internal/timers:575:11)
at process.processTimers (node:internal/timers:514:7) {
code: 'ENETUNREACH',
[errors]: [
Error: connect ENETUNREACH 2001:67c:4e8:f004::9:443 - Local (undefined:undefined)
at internalConnectMultiple (node:net:1160:40)
at Timeout.internalConnectMultipleTimeout (node:net:1644:3)
at listOnTimeout (node:internal/timers:575:11)
at process.processTimers (node:internal/timers:514:7) {
errno: -101,
code: 'ENETUNREACH',
syscall: 'connect',
address: '2001:67c:4e8:f004::9',
port: 443
}
]
}
}
Node.js v20.3.1
我认为代码不必要,只需使用 axios({"url": "https://example.com"})。
网络速度很慢而且不稳定,但我可以访问互联网。这些请求与其他实用程序(例如curl或Python中的请求)一起工作得很好(第一次尝试使用两者),因此排除了我的计算机或网络配置的任何问题。
fetch 和 axios 实际上都可以工作,但我被迫不断重试(最多 200 次),直到它决定工作。我尝试将 { timeout: 0 } 和 { timeout: 5000 } 传递给 axios 构造函数,但没有成功。
我也尝试过这个,但似乎没有任何效果:
const source = CancelToken.source();
const timeout = setTimeout(() => {
source.cancel();
}, 10000);
axios.get(ip + '/config', {cancelToken: source.token}).then((result) => {
clearTimeout(timeout);
// ...
});
axios.get('/foo/bar', {
signal: AbortSignal.timeout(5000) //Aborts request after 5 seconds
}).then(function(response) {
// ...
}); Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号
您可以使用
timeout属性作为可传递给axios的配置选项之一。https://axios-http.com/docs/req_config
您还可以更改其默认值,而不是每次都使用
timeout属性:https://axios-http.com/docs/config_defaults