Ax ios в Nuxt. js неправильно отлавливает ошибку - PullRequest
0 голосов
/ 30 мая 2020

Как я уже упоминал выше, мой Ax ios на Nuxt. js неправильно отлавливает ошибку

Мне нужно знать об ошибке, поэтому я могу предложить пользователю узнать, что их ввод неверен но это только console.log статус кода ошибки, а не сообщение из моего API

это мой код

await axios
  .post(
    "API LINK",
    {
      email: user.email,
      password: "123456",
      name: user.name,
      dob: user.dob ?? null,
      gender: user.gender ?? null,
      profileImage: imageUrl ?? user.profileImage,
      userType: user.userType
    }
  )
  .then(res => {
    console.log("success");
    console.log(res);
  })
  .catch(err => {
    console.log('fail');
    console.log(err)
  })

Это то, что войти в chrome console

error
add.vue?104b:181 Error: Request failed with status code 400
    at createError (createError.js?2d83:16)
    at settle (settle.js?467f:17)
    at XMLHttpRequest.handleLoad (xhr.js?b50d:61)

Но чего я ожидаю от console.log (err) , так это

(This is response from postman)
{
    "message": "Error creating new user.",
    "error": {
        "code": "auth/invalid-password",
        "message": "The password must be a string with at least 6 characters."
    }
}

Понятия не имею, что происходит.

1 Ответ

1 голос
/ 30 мая 2020

Попробуйте это

 console.log(err.response)

Чтобы очистить код, вы можете деструктурировать аргумент:

  .catch(({ response }) => {
    console.log('fail');
    console.log(response)
  })

Если вы хотите использовать другое имя свойства вместо response, вы можете сделайте это так:

  .catch(({ response: err }) => {
    console.log('fail');
    console.log(err)
  })

Проблема в том, что когда console.log пытается вывести ошибку, печатается строковое представление, а не структура объекта, поэтому вы не видите свойство .response.

Здесь можно прочитать о https://github.com/axios/axios/issues/960

...