Esto puede parecer estúpido, pero estoy tratando de obtener los datos de error cuando falla una solicitud en Axios.
axios.get('foo.com')
.then((response) => {})
.catch((error) => {
console.log(error) //Logs a string: Error: Request failed with status code 404
})
En lugar de la cadena, ¿es posible obtener un objeto con quizás el código de estado y el contenido? Por ejemplo:
Object = {status: 404, reason: 'Not found', body: '404 Not found'}
javascript
axios
Sebastian Olsen
fuente
fuente
response
propiedad?console.log
utiliza eltoString
método para formatearError
objetos. No tiene nada que ver con referirse a laresponse
propiedad.console.log
manejaError
objetos como un caso especial. No puedo decir cómo se implementa exactamente en los navegadores, pero si llamaconsole.log({ foo: 'bar' });
yconsole.log(new Error('foo'));
en la Consola de Chrome DevTools, verá que los resultados se ven diferentes.Como dijo @Nick, los resultados que ve cuando
console.log
unError
objeto JavaScript depende de la implementación exacta deconsole.log
, que varía y (imo) hace que la comprobación de errores sea increíblemente molesta.Si desea ver el
Error
objeto completo y toda la información que lleva sin pasar por eltoString()
método, puede usar JSON.stringify :fuente
Estoy usando estos interceptores para obtener la respuesta de error.
fuente
Con TypeScript, es fácil encontrar lo que desea con el tipo correcto.
fuente
Puede usar el operador de propagación (
...
) para forzarlo a un nuevo objeto como este:Tenga en cuenta: esto no será una instancia de error.
fuente
Este es un error conocido, intente usar
"axios": "0.13.1"
https://github.com/mzabriskie/axios/issues/378
Tuve el mismo problema, así que terminé usando
"axios": "0.12.0"
. Funciona bien para mí.fuente
error
Hay una nueva opción llamada
validateStatus
en la configuración de solicitud. Puede usarlo para especificar no lanzar excepciones si el estado <100 o el estado> 300 (comportamiento predeterminado). Ejemplo:fuente
Puede poner el error en un objeto y registrar el objeto, así:
Espero que esto ayude a alguien por ahí.
fuente
Para que el servidor devuelva el código de estado http, puede agregar
validateStatus: status => true
a las opciones de axios:De esta manera, cada respuesta http resuelve la promesa devuelta por axios.
https://github.com/axios/axios#handling-errors
fuente
Es mi código: trabaja para mí
fuente