Wie kann das Timeout für Axios-Anfragen erhöht werden?
P粉293550575
P粉293550575 2023-09-06 12:34:46
0
1
623

Ich bin relativ neu in JavaScript/TypeScript (lerne noch) und habe versucht, Anfragen mit Fetch und Axios zu stellen, habe aber Probleme mit der Netzwerkverbindung. Die Fehlermeldung, die ich erhalte, ist:

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

Ich denke, der Code ist unnötig, verwenden Sie einfach axios({"url": "https://example.com"}).

Die Netzwerkgeschwindigkeit ist langsam und instabil, aber ich kann auf das Internet zugreifen. Diese Anfragen funktionieren problemlos mit anderen Dienstprogrammen wie Curl oder Requests in Python (versuchen Sie es zunächst mit beiden), sodass Probleme mit meinem Computer oder meiner Netzwerkkonfiguration ausgeschlossen sind.

fetch und axios funktionieren beide tatsächlich, aber ich bin gezwungen, es immer wieder zu versuchen (bis zu 200 Mal), bis es funktioniert. Ich habe erfolglos versucht, { timeout: 0 }{ timeout: 5000 } an den Axios-Konstruktor zu übergeben.

Ich habe es auch versucht, aber nichts scheint zu funktionieren:

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) {
   // ...
});

P粉293550575
P粉293550575

Antworte allen(1)
P粉814160988

您可以使用 timeout 属性作为可传递给 axios 的配置选项之一。

https://axios-http.com/docs/req_config

您还可以更改其默认值,而不是每次都使用 timeout 属性:

const instance = axios.create();
instance.defaults.timeout = 2500;

https://axios-http.com/docs/config_defaults

Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage