2017-01-25 3 views
2

Ich habe eine Funktion, die Axios Get-Methode verwenden und auf die versprochene zurückgegeben habe ich Fehlerbehandlung hinzugefügt, um eine Situation zu behandeln, wenn Service, den ich versuche, zu verbinden wurde deaktiviert.Axios können nicht auf die Nachricht eines Fehlers zugreifen

axios.get('/someurl') 
    .then(() => { 
     // this does not matter 
    }) 
    .catch((err) => { 
     logger.error(TAG, 'postCreateVm', err); 
     return reply(Boom.forbidden(err.message)); 
    }); 

Wenn ich curl verwende ich die Nachricht sehen, Status der Antwort ist 403:

# curl -X GET localhost:3000/someurl 
{ 
    "message": "abort" 
} 

Das Problem ist, dass, wenn ich den Zugriff auf ‚Nachricht‘ Eigenschaft versuche ich nichts, aber ich weiß, es ist da! (Ich habe versucht, err.response.data als auch zu verwenden, ohne Erfolg auch)

Nach der Dokumentation soll ich in der Lage sein, darauf zuzugreifen: axios handling errors

Was ist der richtige Weg, um diese Nachricht zugreifen?

Antwort

5

Ich habe seinen Code angesehen, und es scheint, die richtige Antwort ist in dem Fehler, aber in axios, settle.js maskiert es mit einer generischen Antwort. Sie können, indem Sie das Fehlerobjekt in Ihrem catch-Block als Zeichenfolge JSON die Antwort des Servers sehen:

console.log('caught:::', JSON.stringify(response, null, 2)) 

Also in meinem Fall fixiert ich es von den zurückgegebenen Fehler beim Zugriff auf wie:

error.response.data.message 
+0

Es hängt auch von der Serverseite ab. Ich habe meine Server-Seite in Python und Flask, und es stellte sich heraus, dass die Fehlermeldung nicht gesendet wurde (ich habe einen try-catch und im catch-Block reraze ich die selbe Ausnahme erneut). Nach der Registrierung eines Fehlerhandlers wie hier erklärt http://flask.pooco.org/docs/0.12/patterns/apierrors/ war die Fehlermeldung wie in dieser Antwort zugänglich. – Mahdi

1

Mein Fang Funktion hat die Antworteigenschaft anstelle des Fehlerobjekts erhalten. Also, um auf Nachricht zuzugreifen, die ich verwendet hatte:

err.data.message 
Verwandte Themen