Isso pode parecer estúpido, mas estou tentando obter os dados de erro quando uma solicitação falha no Axios.
axios.get('foo.com')
.then((response) => {})
.catch((error) => {
console.log(error) //Logs a string: Error: Request failed with status code 404
})
Em vez da string, é possível obter um objeto com talvez o código e o conteúdo do status? Por exemplo:
Object = {status: 404, reason: 'Not found', body: '404 Not found'}
javascript
axios
Sebastian Olsen
fonte
fonte
response
propriedade?console.log
usa otoString
método para formatarError
objetos. Não tem nada a ver com referência àresponse
propriedade.console.log
manipulaError
objetos como um caso especial. Não sei dizer exatamente como ele foi implementado nos navegadores, mas se você ligarconsole.log({ foo: 'bar' });
econsole.log(new Error('foo'));
no Chrome DevTools Console, verá que os resultados parecem diferentes.Como o @Nick disse, os resultados que você vê quando
console.log
umError
objeto JavaScript depende da implementação exata deconsole.log
, o que varia e (imo) torna a verificação de erros incrivelmente irritante.Se você deseja ver o
Error
objeto completo e todas as informações que ele contorna ignorando otoString()
método, basta usar JSON.stringify :fonte
Estou usando esses interceptores para obter a resposta do erro.
fonte
Com o TypeScript, é fácil encontrar o que você deseja com o tipo certo.
fonte
Você pode usar o operador spread (
...
) para forçá-lo a um novo objeto como este:Esteja ciente: isso não será uma instância do Erro.
fonte
Este é um erro conhecido, tente usar
"axios": "0.13.1"
https://github.com/mzabriskie/axios/issues/378
Eu tive o mesmo problema, então acabei usando
"axios": "0.12.0"
. Isso funciona bem para mim.fonte
error
Há uma nova opção chamada
validateStatus
na configuração de solicitação. Você pode usá-lo para especificar para não lançar exceções se status <100 ou status> 300 (comportamento padrão). Exemplo:fonte
Você pode colocar o erro em um objeto e registrá-lo da seguinte maneira:
Espero que isso ajude alguém lá fora.
fonte
Para obter o código de status http retornado do servidor, você pode adicionar
validateStatus: status => true
às opções dos axios:Dessa forma, toda resposta http resolve a promessa retornada dos axios.
https://github.com/axios/axios#handling-errors
fonte