Axios: Code/Status für "Netzwerkfehler" festlegen

Erstellt am 20. Juli 2016  ·  69Kommentare  ·  Quelle: axios/axios

Ich versuche zu erkennen, wenn mein Server ausgefallen ist, damit ich dem Benutzer eine entsprechende Fehlermeldung anzeigen kann.

In diesem Fall lösen Axios-Netzwerkanforderungen einen Fehler aus, der sich von allen anderen Axios-Fehlern unterscheidet, wie hier beschrieben: https://github.com/mzabriskie/axios/issues/204

In meinem Code scheint die einzige Möglichkeit, diesen Fehler zu erkennen, darin, err.message zu überprüfen:
if (err.message === "Network Error"){/*tell user the server is down*/}

Das stört mich, weil String-Vergleiche ein wenig riskant sind; vielleicht wird diese Nachricht eines Tages übersetzt und mein Code wird fehlschlagen.

Es wäre großartig, wenn err.status oder err.code (oder err.???) auf einen dokumentierten Wert gesetzt würden, den wir in unserem Code überprüfen können.

Gibt es eine andere Möglichkeit, dieses Szenario zu erkennen, das ich vermisse?
Danke an alle!

Hilfreichster Kommentar

Ich habe dieses Problem. Kann mir bitte jemand helfen?

Die Serverantwort ist 401, aber Axios gibt mir Folgendes:

Fehler --> "Netzwerkfehler"
error.response --> undefiniert
error.status --> undefiniert

Alle 69 Kommentare

Ich denke, du hast recht. Ein Statuscode wäre sinnvoll.

Wie jemand in #204 sagte, gibt es einige Fälle, in denen es unmöglich ist, Netzwerkfehler im Browser abzufangen, daher antwortet Axios mit einem generischen Fehler ( new Error('Network error') ). Wenn Sie sie von schlechten Antworten unterscheiden möchten (Statuscode !== 2xx oder benutzerdefinierte Prüfung), ist es meiner Meinung nach am besten, die Eigenschaft status anstelle der Fehlermeldung zu überprüfen. Z.B:

axios.request(options).catch(function(error) {
  if (!error.status) {
    // network error
  }
});

Ich denke, das Festlegen eines benutzerdefinierten Statuscodes wäre eine schlechte Idee (es könnte zu mehr Verwirrung führen) und das Festlegen einer bestimmten Eigenschaft würde überhaupt nicht helfen, da wir nur einen einzigen Fehlerfall haben.

Natürlich ist in Node.js einfacher, da Sie Zugriff auf den tatsächlichen Fehler haben und gemäß der Node.js-Dokumentation überprüfen können.

Ah, jeder Fehler, der von einem Axios-Aufruf ausgelöst wird, hat also garantiert entweder 1) einen Status oder 2) ist ein allgemeiner Netzwerkfehler? Ich denke, das ist gut genug.

Bisher kann ich den Fehlercode 404,500 nicht abrufen.. Trotzdem erhalte ich einen Netzwerkfehler. Wie kann man das lösen?
instance.post('/foo', {request_id : 12345})
.dann(Funktion(Antwort) {})
.catch(Funktion(Fehler){
Konsole.log(Fehler); // Netzwerkfehler
Konsole.log(Fehler.Status); // nicht definiert
Konsole.log (Fehler.code); // nicht definiert
});

Netzwerkfehler bedeutet, dass Axios sich überhaupt nicht mit Ihrem Server verbinden konnte, sodass es keinen Fehlercode vom Server erhalten kann. Versuchen Sie es vielleicht mit einem anderen Tool (Curl, Postman oder einem Browser), um sicherzustellen, dass Sie eine Verbindung herstellen können?

Ich kann mich mit meinem Server verbinden, er gibt tatsächlich den Fehlercode 404 zurück und bei einigen anderen API-Aufrufen gibt der Server 500 Interner Serverfehler zurück, aber ich kann den Netzwerkfehlercode immer noch nicht durch Skripting abrufen (dh console.log( error.status); // undefiniert ).

Es ist in error.response.status .

Ich habe dieses Problem. Kann mir bitte jemand helfen?

Die Serverantwort ist 401, aber Axios gibt mir Folgendes:

Fehler --> "Netzwerkfehler"
error.response --> undefiniert
error.status --> undefiniert

Wenn der Fehler "Netzwerkfehler" ist, bedeutet dies, dass Axios keine Verbindung zu Ihrem Server herstellen konnte oder aus irgendeinem Grund keine Antwort von Ihrem Server erhält. Der 401-Fehler schafft es also nie in Axios. Vielleicht eine Frage mit Beispielcode auf StackOverflow posten?

Ist bei der Verwendung von AWS API-Gateway darauf gestoßen. Für jeden, der die gleichen Probleme sieht, ist es ein Problem mit 4xx-Fehlern (in meinem Fall ein 401), die nicht mit den CORS-Headern reagieren. Habe Stunden damit verbracht, dieses verdammte Problem zu beheben! Danke @jonathan-stone für den Hinweis auf meine Fehlerbehebung direkt.

@codygreen Ich habe immer noch diese Probleme und bin auf diese https://forums.aws.amazon.com/message.jspa?messageID=763752 gestoßen

Haben Sie einen Workaround gefunden?

Hat jemand Lösungen für dieses Problem?

Mein Problem war mit Jest + Axios. Ich habe es gelöst, indem ich dies zu meiner package.json hinzugefügt habe:

"jest": {
    "testEnvironment": "node"
}

Dies funktioniert, obwohl ich anscheinend keine Dokumentation finden kann, die es unterstützt. Ich gehe davon aus, dass error.response bei einem Netzwerkfehler leer sein sollte, andernfalls handelt es sich um einen API-Fehler.

axios.request(options).catch(function(error) {
  if (!error.response) {
    // network error
  } else {
    // http status code
    const code = error.response.status
    // response data
    const response = error.response.data
  }
});

Hat jemand eine beste Lösung dafür gefunden? Axios-Leute machen Lärm :(

Ich habe heute auch diesen Fehler bekommen, ich weiß nicht was das Problem ist, das ist mein Skript:

js var url = "http://localhost:8000/"; Axios.get(url).then(function(response){ alert(response) }).catch(function(error){ alert(error) });

http://localhost :8000/ gibt eine JSON-Antwort zurück, dies funktioniert auf anderen Hosts nicht

Es könnte ein Cors-Fehler sein.

Zeile 87 wurde im xhr-Adapter auf 'Network Error' gesetzt ? Wie kann man das ändern, damit der Fehler abgefangen werden kann?
https://github.com/axios/axios/blob/d7f021b8d4cc50bfa0653011bc02452d234d1255/lib/adapters/xhr.js#L84 -L91

Mein Problem, es ist kein Problem, aber das erwartete Verhalten aufgrund der Browsersicherheit. XHR-Fehlerantworten erhalten jetzt ein ProgressEvent für Fehlerstatuscodes.

Ich habe das gleiche Problem. Ich glaube, es ist ein Problem mit CORS. Hat jemand eine gute Lösung dafür gefunden?

@codygreen hast du es geschafft, dein Problem mit API Gateway zu beheben? Ich kann nicht einmal den Antwortstatuscode herausfinden, der mir beim weiteren Debuggen hilft.

Gleiches allgemeines Problem hier. Für mich war es definitiv CORS. Der Browser stellte OPTIONS-Anfragen an den Server und ich hatte kein Handler-Setup dafür (im Knoten). Axios würde die (fehlgeschlagene) Anfrage erfolgreich abschließen, aber mit einer undefinierten Antwort

      return axios.httpClients.server.post('/someUrl, {
        someData:some_data
      }).then(response => {
        console.log(response);
        //the following errors out because response is undefined
        if (response.data && response.data.success === true) {
        }
      }).catch(err => {
           //catch never triggered
            console.log(err)
      });

Wie lautet Ihr Antwortcode der Antwort? Wenn es sich um einen Netzwerkfehler handelt, wird er bei Verwendung der Fetch-API von Browsern an der Konsole protokolliert, aber aus Sicherheitsgründen nicht an JavaScript übergeben, daher ist der Text leer. Siehe FETCH STANDERS . Wenn Sie auf die Netzwerkfehler der Antwort zugreifen möchten, ändern Sie den HTTP-Antwortcode in 200 und

Mein Problem war ein DNS-Problem. Es funktionierte im Postboten, aber scheiterte in Axios. Versuchte eine Locke, um herauszufinden, dass sie auch dort versagte. Also mein DNS war nicht richtig konfiguriert. Überprüfen Sie dies, wenn dieses Problem auftritt.

Ich bin mir nicht sicher, ob dies auf andere Fälle zutrifft, aber so habe ich dasselbe Problem gelöst (wenn man bedenkt, dass es sich um CORS handelt ).

Stellen Sie auf der headers als Parameter in Ihren PUT oder POST Anfragen übergeben:

const axiosParams = {
  headers: {
    'Content-Type': 'application/x-www-form-urlencoded',
    'Accept': 'application/json',
  },
};

axios.put(`${api.url}/like`, axiosParams)
  .then((response) => {
    // ...
  });

Stellen Sie auf der Backend- Seite sicher, dass Sie CORS mit Express verwenden:

// server.js
const express = require('express');
const app = express();

var cors = require('cors'); // Yep, you need to install this
app.use(cors()); // Works 🎉

Hinweis: hier und hier .

Leute, ich kämpfe auch für eine Weile mit diesem Problem. Aber ich habe das Problem meines axios post network createError auf einem Android-Gerät jetzt herausgefunden. Der Grund für den axios-Netzwerkfehler liegt darin, dass die Formulardaten, die ich an axios übergeben habe, einen falschen Typ von Datenobjekten enthalten, denke ich. Ich habe ein Bildobjekt (ImagePicker-Objekt von Expo) als Parameter von Formulardaten eingefügt, die meiner Meinung nach von Axios nicht akzeptiert werden. Axios kann als Parameter nur string, float, int oder image erhalten. image kann nicht als param übergeben werden, es ist kein Bildtyp, es ist ein reagierendes natives Objekt, ich habe es entfernt und ein Bildfeld als param eingefügt, indem image.uri dem Wert von param zugewiesen wird, dann funktioniert es. Ich hoffe, dies wird einigen Leuten helfen, die auf dasselbe Problem stoßen wie ich zuvor.
Wenn Sie beim Testen von axios Network error einige Ihrer Formulardaten nacheinander löschen, finden Sie heraus, welche die Ursache des Problems ist.

~ @codygreen @hammadzz hast du mit Amazon API Gateway eine Lösung dafür gefunden?~

Update: Wenn jemand mit API Gateway und CORS darüber stolpert, müssen Sie Ihren Antworten einen access-control-allow-origin Antwortheader hinzufügen.

Wie jemand in #204 sagte, gibt es einige Fälle, in denen es unmöglich ist, Netzwerkfehler im Browser abzufangen, daher antwortet Axios mit einem generischen Fehler ( new Error('Network error') ). Wenn Sie sie von schlechten Antworten unterscheiden möchten (Statuscode !== 2xx oder benutzerdefinierte Prüfung), ist es meiner Meinung nach am besten, die Eigenschaft status anstelle der Fehlermeldung zu überprüfen. Z.B:

axios.request(options).catch(function(error) {
  if (!error.status) {
    // network error
  }
});

Ich denke, das Festlegen eines benutzerdefinierten Statuscodes wäre eine schlechte Idee (es könnte zu mehr Verwirrung führen) und das Festlegen einer bestimmten Eigenschaft würde überhaupt nicht helfen, da wir nur einen einzigen Fehlerfall haben.

Natürlich ist in Node.js einfacher, da Sie Zugriff auf den tatsächlichen Fehler haben und gemäß der Node.js-Dokumentation überprüfen können.

Wenn Sie von Google hier sind, beachten Sie, dass diese API veraltet ist. Dies ist von 2016, v <0,13.

Sie möchten error.response überprüfen, wenn der Server antwortet, error.response === undefined für den Offline-Status und den Sonderfall error.code === 'ECONNABORTED' für Timeouts.

Update: Wenn jemand mit API Gateway und CORS darüber stolpert, müssen Sie Ihren Antworten einen Antwortheader hinzufügen:

access-control-allow-origin: *

Mach das definitiv nicht. Setzen Sie die Ursprünge entsprechend statt * .

Für mich war es Cors Problem, wenn Sie Laravel verwenden und Sie definieren a

 ->middleware(['auth:api'])

Sie müssen alle andere Middleware, die Sie benötigen, zu dieser Route hinzufügen

->middleware(['auth:api','cors']);

Ich hatte auch dieses Problem, verwenden Sie Ihre lokale IP-Adresse anstelle von localhost (zB 10.0.0.12:8083 ). bei mir hat es funktioniert.

Wenn ich also das richtige habe, scheint in einigen Fällen der 0-Status aus einer Axios-Anfrage zu erscheinen. aber es kann programmgesteuert nicht genau bestimmt werden, welcher Fall aufgetreten ist.

Zu diesen Fällen gehört, dass eine CORS-Preflight-Anfrage fehlgeschlagen ist und daher die eigentliche Anfrage nicht einmal versucht wird. Aus diesem Grund wäre der 404-Status nicht angemessen.

Jemand muss @joelnet ein Bier kaufen. Das hat mir den Tag gerettet:

https://github.com/axios/axios/issues/383#issuecomment -308606088

Andere Leute haben vielleicht andere Probleme, aber das hat bei mir funktioniert.

Ich erhalte diesen Fehler zeitweise. Ich vermute, dass es kein CORS-Problem ist.
Mein API/Server ist ein .net-Server.
Hat noch jemand zeitweise damit zu tun?

Ich hatte diesen Fehler, weil ich weder HTTP noch https angegeben habe. Hauptsächlich Code selbst wirft einen Fehler auf Protokoll undefiniert. Dies sollte gehandhabt werden oder in einem Fehler-Meta sollte es enthalten sein.

Wie @jonathan-stone sagte, glaube ich nicht, dass dies behoben werden kann, weil Axios einfach nicht weiß, was passiert ist. Es ist, als würdest du deinen Freund nach Funyuns schicken und er sagt, der Laden sei geschlossen. Da steht "immer offen" - warum wurde der Laden geschlossen. Haben sie für immer geschlossen (404)? Ist jemand krank (500)? Ist ihnen das Inventar ausgegangen (503)? Er weiß es nicht, sie sind nur geschlossen (Netzwerkfehler)!

Ich erhielt diesen Fehler, als ich Axios in schneller Folge gegen einen lokalen Express-Server auslöste, der versuchte, verschiedene Arten von Daten von meiner API abzurufen. Es ist nicht so, dass Axios keinen korrekten Fehler gemeldet hätte - es kann nicht - mein Express-Server hat nicht geantwortet, weil er zu beschäftigt war.

Wenn ich die Anfrage erneut versuche (mit

Um das Problem zu lösen, müssen Sie immer angeben
Nginx

add_header 'Zugriffskontrolle-Erlauben-Ursprung' * immer ;

Um das Problem zu lösen, müssen Sie immer angeben
Nginx

add_header 'Zugriffskontrolle-Erlauben-Ursprung' * immer ;

Tun Sie dies nicht. Tun Sie dies niemals . Sie würden Ihre Firewall nicht deaktivieren, nur um eine Verbindung durchzulassen.

Hallo Leute, wir haben einen Entitätsgrößenschutz auf unserem Proxy eingerichtet, er gibt einen generischen Fehler zurück, aber ich kann den Statuscode 413 nicht abrufen ... ist das irgendwie möglich?

Screenshot 2019-05-07 at 14 19 26

Haben Sie das Objekt response ausprobiert?
axios.get(url).then(stuff => console.log(Object.keys(stuff.response));

@ComputerCarl Sie denken, es hat eine Erfolgsreaktion? Glaube nicht, denn es endet in catch aber ich kann es versuchen ...

Es tut uns leid! Mein Kopf war woanders! Überprüfen Sie das Fangobjekt ...catch(err => console.log(Object.keys(err.response));

Axios-Dokumentation

Ich habe in einem meiner Programme;
err.response.data.message;

die ich von Express gesendet habe;

app.use(function (err, req, res, next) {
  res.status(err.status || 500);
  // this is err.response.data on Axios client
  res.send({ message: 'my custom error' });
});

@ComputerCarl aber error.response ist undefiniert, genau wie error.status :) Sie können es auf dem Screenshot sehen, ich habe es bereits in console.log . Nur error.request ist ein XMLHttpRequest-Objekt, wie Sie sehen können

Ok.. Ich weiß nicht, warum Sie zwei Fehler erhalten (die 413 zusätzlich zum CORS). Wenn Sie jedoch Express verwenden, sollten Sie CORS aktivieren;

const cors = require('cors');
// ...
app.use(cors());

Auch, wie ich erwähnte oben , wenn der Server flat-out Ihre Anfrage ablehnt, dann Axios weiß nicht, was den Fehler verursacht hat . An diesem Punkt bin ich ratlos und Sie müssen warten, bis jemand klüger antwortet. :-)

@ComputerCarl danke fürs Ausprobieren :-D CORS ist in Ordnung, ich habe viele verschiedene Aufrufe an dieselbe API in der App und diese funktionieren gut. Sogar Fehler, die von der API zurückgegeben werden, kann ich problemlos verarbeiten. Das Problem ist bei diesem nur einer auf der Proxy-Ebene abgebrochen.

Ich weiß nicht, ob Ihnen das hilft, aber ich hatte eine Anwendung erstellt, die Anfragen über Proxys stellte. Das von mir verwendete Framework verschlang den Express-Fehler. Nachdem ich den Fehler res.send({ message: messageFromProxy }); explizit weitergeleitet hatte, konnte ich schließlich einen Fehler sehen und auf dem Client behandeln.

Viel Glück.

@jonathan-stone sagte, Netzwerkfehler bedeutet, dass Axios überhaupt keine Verbindung zu Ihrem Server herstellen konnte, sodass kein Fehlercode vom Server abgerufen werden kann.

vielleicht hilft das jemandem.

error.data ;

@balwant-sd wie Sie auf dem Screenshot sehen können, den ich hier gesendet

Sogar in der Registerkarte "Netzwerk" kann ich den Statuscode 413 sehen ...
Screenshot 2019-06-03 at 15 42 12

Wie oben erwähnt, gibt ein Login POST, der einen 401-Fehler zurückgibt, nur 'Network Error' mit Code als undefiniert anstelle von 401 zurück.

Dieser Fehler scheint also ein falsch konfigurierter CORS-Fehler zu sein, der sich nur auf Ihrer Registerkarte "Netzwerk" widerspiegelt. Ich habe das gleiche Problem wie @ketysek , und es scheint, dass mein ngnix CORS dafür nicht anwendet. Wie bereits erwähnt, schafft es ein generischer Netzwerkfehler nie in axios error.response . Hier gebe ich gerne dem Backend die Schuld.. oh warte, das habe ich gemacht...

Hallo, ich habe auch das gleiche Problem, sogar die Aufforderung, die richtigen Antwortaxios zu erhalten, gibt immer "Netzwerkfehler" zurück und geht zu .catch (Funktion (Fehler) {}); Par. hat jemand eine Lösung für dieses Problem?

Ich hatte heute das gleiche Problem. Bei diesem Problem geht es hauptsächlich darum, dass das Backend keine Site-übergreifenden HTTP-Anforderungen zulässt. In meinem Fall verwende ich django, also habe ich die corsheaders-Klasse so hoch wie möglich in der MIDDLEWARE platziert:
MIDDLEWARE = [ 'corsheaders.middleware.CorsMiddleware', //..etc ]
Und ich habe eine CORS_ORIGIN_WHITELIST erstellt, um nur bestimmte Ursprünge zuzulassen:
CORS_ORIGIN_WHITELIST = [ "http://localhost:8081" , //..etc ]
Dies ist für django-cors-Header. Wenn Sie kein Django-Benutzer sind, sollten Sie die Dokumentation Ihres bevorzugten Cors-Header-Moduls überprüfen.

Wie jemand in #204 sagte, gibt es einige Fälle, in denen es unmöglich ist, Netzwerkfehler im Browser abzufangen, daher antwortet Axios mit einem generischen Fehler ( new Error('Network error') ). Wenn Sie sie von schlechten Antworten unterscheiden möchten (Statuscode !== 2xx oder benutzerdefinierte Prüfung), ist es meiner Meinung nach am besten, die Eigenschaft status anstelle der Fehlermeldung zu überprüfen. Z.B:

axios.request(options).catch(function(error) {
  if (!error.status) {
    // network error
  }
});

Ich denke, das Festlegen eines benutzerdefinierten Statuscodes wäre eine schlechte Idee (es könnte zu mehr Verwirrung führen) und das Festlegen einer bestimmten Eigenschaft würde überhaupt nicht helfen, da wir nur einen einzigen Fehlerfall haben.

Natürlich ist in Node.js einfacher, da Sie Zugriff auf den tatsächlichen Fehler haben und gemäß der Node.js-Dokumentation überprüfen können.

Das Problem bei diesem Ansatz besteht darin, dass wir beispielsweise Code in axios.then ausführen und der Code einen Fehler aufweist, zum Beispiel "Zuweisung an Konstante" (was mein Fall war). Mit dem von Ihnen erwähnten Ansatz erhalten wir einen Netzwerkfehler für " Zuordnung zu Konstante"

Codebeispiel:

axios(options).then(() => {
  const foo = '';
  foo = 'bar'; // will throw error "assignment to constant"
}).catch(error => {
  if (!error.status) {
    // "assignment to constant" will be considered as network error
  }
})

Ich verwende diese Dienstprogrammfunktion, um Netzwerkfehler von unten in der Aufrufliste abzufangen (verhindert die Identifizierung von Nicht-Axios-Fehlern als Netzwerkfehler):

function isNetworkError(err) {
  return !!err.isAxiosError && !err.response;
}

Siehe https://github.com/axios/axios/pull/1419

Ich verwende diese Dienstprogrammfunktion, um Netzwerkfehler von unten in der Aufrufliste abzufangen (verhindert die Identifizierung von Nicht-Axios-Fehlern als Netzwerkfehler):

function isNetworkError(err) {
  return !!err.isAxiosError && !err.response;
}

Siehe #1419

Problem gelöst
Vielen Dank

@mifi können Sie ein detaillierteres Beispiel dafür zeigen, wie Sie isNetworkError , um zu verhindern, dass Nicht-Axios-Fehler als Netzwerkfehler identifiziert werden?

Genau wie dieser:

try {
  ...
  some code that calls axios
  ...
} catch (err) {
  if (isNetworkError(err)) return alert(‘check your connection);
  throw err;
}

Wenn es sich um einen CORS-Fehler handelt und Sie Serverless verwenden, kann dies behoben werden:

resources:
  Resources:
    # CORS for 4xx errors
    GatewayResponseDefault4XX:
      Type: 'AWS::ApiGateway::GatewayResponse'
      Properties:
        ResponseParameters:
          gatewayresponse.header.Access-Control-Allow-Origin: "'*'"
          gatewayresponse.header.Access-Control-Allow-Headers: "'*'"
        ResponseType: DEFAULT_4XX
        RestApiId:
          Ref: 'ApiGatewayRestApi'

Wenn der Fehler "Netzwerkfehler" ist, bedeutet dies, dass Axios keine Verbindung zu Ihrem Server herstellen konnte oder aus irgendeinem Grund keine Antwort von Ihrem Server erhält. Der 401-Fehler schafft es also nie in Axios. Vielleicht eine Frage mit Beispielcode auf StackOverflow posten?

Ich erhalte auch den gleichen Fehler, Für mich erreicht es den Server und ich antworte mit 403 und einem JSON, was zu Network Error in den Axios führt

Ich kann die Antwort im Netzwerk-Tab des Browsers sehen, aber im Catch-Block ist err.response definiert

image

image

@narenderv7 ich auch

@WarisR Ich habe dies behoben, Cors auf der Serverseite zugelassen habe. Ich dachte, Axios-Problem, aber eigentlich ist es das nicht. Ich kann Ihnen helfen, wenn Sie mir das Problem mitteilen, mit dem Sie wirklich konfrontiert sind.

Fügen Sie den Server hinzu 'Access-Control-Allow-Origin': '*'

@ketysek Ich habe den gleichen Fehler

Screenshot from 2019-12-26 16-48-22

hast du eine Möglichkeit gefunden, diesen Fehler abzufangen?

Hallo Leute, ich habe ein Problem mit dem CORS-Fehler, bei dem eine Antwort mit dem Status 403 (4 * & 5 ) erhalten wurde.Nginx sendet Header "Access-Control-Allow-Origin" nur für Antwortstatus 2 & 3 *.

Ich behebe dieses Problem und bearbeite die nginx-Konfiguration von:
add_header 'Access-Control-Allow-Origin' '*';
zu:
add_header 'Access-Control-Allow-Origin' '*' always;

Ich habe das gleiche Problem, ich teste es mit Axios 0.18.0 und 0.19.0

Schritte:
Ich habe eine Anfrage mit abgelaufenem Token gestellt, manchmal kam die error.response richtig, aber manchmal kam die Fehlerantwort undefiniert und die Meldung lautet "Netzwerkfehler". Warum ist das ein Backend-Fehler oder ein Bug in Axios?

Manchmal kann es durch die AD-Blocker in Ihrem Browser verursacht werden ...
Probieren Sie den incognito oder private Modus aus oder laden Sie einen neuen Browser herunter, um ihn zu testen ...

@narenderv7 Ja, es ist ein serverseitiger Fehler. Aber ich denke, Axios sollte in der Lage sein, einen Fehler in diesem Fall zu behandeln, oder?

Ich muss diese beiden Fälle unterscheiden:

Wie ich überprüft habe. Die Fehlerrückgabe durch den catch Block ist in beiden oben genannten Fällen gleich.

Es gibt noch ein Problem:
https://github.com/axios/axios/issues/1296

Der Fehler besteht immer noch, falls jemand eine Lösung für dieses Problem hat Teilen Sie es uns bitte mit.

Ich verwende diese Dienstprogrammfunktion, um Netzwerkfehler von unten in der Aufrufliste abzufangen (verhindert die Identifizierung von Nicht-Axios-Fehlern als Netzwerkfehler):

function isNetworkError(err) {
  return !!err.isAxiosError && !err.response;
}

Siehe #1419

der Zeitüberschreitungsfehler kann auch diesen Bedingungen entsprechen.
image

War diese Seite hilfreich?
0 / 5 - 0 Bewertungen