To może wydawać się głupie, ale próbuję uzyskać dane o błędach, gdy żądanie zakończy się niepowodzeniem w Axios.
axios.get('foo.com')
.then((response) => {})
.catch((error) => {
console.log(error) //Logs a string: Error: Request failed with status code 404
})
Czy zamiast ciągu można uzyskać obiekt z kodem stanu i zawartością? Na przykład:
Object = {status: 404, reason: 'Not found', body: '404 Not found'}
javascript
axios
Sebastian Olsen
źródło
źródło
response
właściwości?console.log
używatoString
metody do formatowaniaError
obiektów. Nie ma to nic wspólnego z odwoływaniem się doresponse
nieruchomości.console.log
obsługujeError
obiekty jako szczególny przypadek. Nie mogę powiedzieć, jak dokładnie jest on zaimplementowany w przeglądarkach, ale jeśli zadzwoniszconsole.log({ foo: 'bar' });
iconsole.log(new Error('foo'));
w konsoli Chrome DevTools, zobaczysz, że wyniki wyglądają inaczej.Jak powiedział @Nick, wyniki, które widzisz, gdy obiekt
console.log
JavaScriptError
zależy od dokładnej implementacjiconsole.log
, która jest różna i (imo) sprawia, że sprawdzanie błędów jest niezwykle denerwujące.Jeśli chcesz zobaczyć pełny
Error
obiekt i wszystkie informacje, które zawiera, pomijająctoString()
metodę, możesz po prostu użyć JSON.stringify :źródło
Używam tych przechwytywaczy, aby uzyskać odpowiedź na błąd.
źródło
Dzięki TypeScript łatwo jest znaleźć to, czego szukasz, dzięki odpowiedniemu typowi.
źródło
Możesz użyć operatora spread (
...
), aby zmusić go do utworzenia nowego obiektu, takiego jak ten:Pamiętaj: nie będzie to wystąpienie błędu.
źródło
To znany błąd, spróbuj go użyć
"axios": "0.13.1"
https://github.com/mzabriskie/axios/issues/378
Miałem ten sam problem, więc skończyłem używać
"axios": "0.12.0"
. Działa dla mnie dobrze.źródło
error
Istnieje nowa opcja o nazwie
validateStatus
w konfiguracji żądania. Można go użyć, aby określić, aby nie zgłaszać wyjątków, jeśli status <100 lub status> 300 (zachowanie domyślne). Przykład:źródło
Możesz umieścić błąd w obiekcie i zarejestrować obiekt w następujący sposób:
Mam nadzieję, że pomoże to komuś tam.
źródło
Aby uzyskać kod stanu HTTP zwrócony z serwera, możesz dodać
validateStatus: status => true
do opcji axios:W ten sposób każda odpowiedź HTTP rozwiązuje obietnicę zwróconą z axios.
https://github.com/axios/axios#handling-errors
źródło
To mój kod: Pracuj dla mnie
źródło