axios не может получить доступ к сообщению об ошибке

У меня есть функция, которая использует метод axios get, и в обещанный возврат я добавил обработку ошибок для обработки ситуации, когда служба, к которой я пытаюсь подключиться, была отключена.

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

Когда я использую curl, я вижу сообщение со статусом ответа 403:

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

Проблема в том, что когда я пытаюсь получить доступ к свойству message, я ничего не получаю, но я знаю, что оно есть! (Я также безуспешно пытался использовать err.response.data)

Согласно документации, я должен иметь к нему доступ: ошибки обработки axios

Как правильно получить доступ к этому сообщению?


person Konrad Klimczak    schedule 25.01.2017    source источник


Ответы (2)


Я посмотрел на его код, и мне кажется, что это правильный ответ в ошибке, но в axios, Sett.js маскирует его общим ответом. Вы можете увидеть ответ сервера, зарегистрировав объект ошибки в блоке catch как строковый JSON:

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

Итак, в моем случае я исправил это, обратившись к возвращенной ошибке как:

error.response.data.message
person John Wundes    schedule 26.01.2017
comment
Это также зависит от серверной части. У меня есть серверная часть Python и Flask, и оказалось, что сообщение об ошибке не было отправлено (у меня есть try-catch, и в блоке catch я повторно вызываю то же исключение). После регистрации обработчика ошибок, как описано здесь, flask.pocoo.org/docs/0.12/patterns / apierrors сообщение об ошибке было доступно, как в этом ответе. - person Mahdi; 06.04.2017

Моя функция перехвата получила свойство ответа вместо объекта ошибки. Итак, для доступа к сообщению я использовал:

err.data.message
person Konrad Klimczak    schedule 02.02.2017