Comment augmenter le délai d'attente des requêtes axios ?
P粉293550575
P粉293550575 2023-09-06 12:34:46
0
1
621

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粉293550575
P粉293550575

répondre à tous(1)
P粉814160988

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

Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal