recherche

Maison  >  Questions et réponses  >  le corps du texte

Comment augmenter le délai d'attente des requêtes axios ?

Je suis relativement nouveau dans JavaScript/TypeScript (j'apprends encore) et j'ai essayé de faire des requêtes en utilisant fetch et axios, mais je rencontre des problèmes de connectivité réseau. L'erreur que je reçois est :

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

Je pense que le code est inutile, utilisez simplement axios({"url": "https://example.com"}).

La vitesse du réseau est lente et instable, mais je peux accéder à Internet. Ces requêtes fonctionnent très bien avec d'autres utilitaires tels que curl ou des requêtes en Python (essayez d'abord d'utiliser les deux), ce qui exclut tout problème avec mon ordinateur ou la configuration de mon réseau.

fetch et axios fonctionnent tous les deux, mais je suis obligé de réessayer (jusqu'à 200 fois) jusqu'à ce qu'il décide de fonctionner. J'ai essayé de passer { timeout: 0 }{ timeout: 5000 } au constructeur axios sans succès.

J'ai aussi essayé ceci mais rien ne semble fonctionner :

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 Il y a quelques jours628

répondre à tous(1)je répondrai

  • P粉814160988

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

    Vous pouvez utiliser l'une des options de configuration de timeout 属性作为可传递给 axios.

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

    Vous pouvez également modifier sa valeur par défaut au lieu d'utiliser l'attribut timeout à chaque fois :

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

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

    répondre
    0
  • Annulerrépondre