suchen

Heim  >  Fragen und Antworten  >  Hauptteil

Wie kann das Timeout für Axios-Anfragen erhöht werden?

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粉293550575P粉293550575452 Tage vor629

Antworte allen(1)Ich werde antworten

  • P粉814160988

    P粉8141609882023-09-07 10:18:52

    您可以使用 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

    Antwort
    0
  • StornierenAntwort