Это может показаться глупым, но я пытаюсь получить данные об ошибках при сбое запроса в Axios.
axios.get('foo.com')
.then((response) => {})
.catch((error) => {
console.log(error) //Logs a string: Error: Request failed with status code 404
})
Вместо строки возможно ли получить объект с кодом состояния и содержимым? Например:
Object = {status: 404, reason: 'Not found', body: '404 Not found'}
javascript
axios
Себастьян Олсен
источник
источник
response
свойство?console.log
используетtoString
метод для форматированияError
объектов. Это не имеет ничего общего со ссылкой наresponse
собственность.console.log
обрабатываетError
объекты как особый случай. Я не могу сказать, как именно это реализовано в браузерах, но если вы позвонитеconsole.log({ foo: 'bar' });
иconsole.log(new Error('foo'));
в консоли Chrome DevTools, вы увидите, что результаты выглядят иначе.Как сказал @Nick, результаты, которые вы видите, когда вы
console.log
JavaScript-Error
объект, зависят от точной реализацииconsole.log
, которая варьируется и (imo) делает проверку ошибок невероятно раздражающей.Если вы хотите увидеть полный
Error
объект и всю информацию, содержащуюся в нем, в обходtoString()
метода, вы можете просто использовать JSON.stringify :источник
Я использую эти перехватчики, чтобы получить ответ об ошибке.
источник
С TypeScript легко найти то, что вы хотите, с правильным типом.
источник
Вы можете использовать оператор распространения (
...
), чтобы заставить его в новый объект, как это:Помните: это не будет ошибкой.
источник
Это известная ошибка, попробуйте использовать
"axios": "0.13.1"
https://github.com/mzabriskie/axios/issues/378
У меня была такая же проблема, поэтому я в конечном итоге использовал
"axios": "0.12.0"
. Он отлично работает для меня.источник
error
В
validateStatus
конфигурации запроса появилась новая опция . Вы можете использовать его, чтобы указать, чтобы не генерировать исключения, если статус <100 или статус> 300 (поведение по умолчанию). Пример:источник
Вы можете поместить ошибку в объект и зарегистрировать объект, например так:
Надеюсь, это поможет кому-то там.
источник
Чтобы получить код состояния http, возвращаемый с сервера, вы можете добавить
validateStatus: status => true
в axios параметры:Таким образом, каждый http-ответ разрешает обещание, возвращаемое Axios.
https://github.com/axios/axios#handling-errors
источник
Это мой код: работа для меня
источник