#javascript #vue.js #async-await #axios
#javascript #vue.js #асинхронный -ожидание #axios
Вопрос:
Я пытаюсь изменить свой маршрут на / despesas после того, как получу статус входа в систему для работы (статус: 200).
async EnvioLogin() {
const response = await axios.post("api/auth/login", {
email: this.email,
password: this.password,
});
localStorage.setItem("token", response.data.token);
const status = JSON.parse(response.data.response.status);
if (status == "200") {
this.$router.push("/despesas");
} else {
showError(true), setTimeout(showError(false), 3000);
}
},
Когда я вхожу в систему и проверяю в своем браузере, появляется это сообщение:
{data: {…}, status: 200, statusText: "OK", headers: {…}, config: {…}, …}
[Vue warn]: Error in v-on handler (Promise/async): "TypeError: Cannot read property 'status' of undefined"
Комментарии:
1. Похоже, у вас слишком много
response
«sresponse.data.response.status
«.2. должно ли это быть просто response.status?
Ответ №1:
это должно быть response.status
или просто вы можете выполнить проверку…
if (response.ok) {
/* do something */
} else {
/* do something */
}
response.ok аналогичен тому, что у вас есть в statusText: ok
:
{data: {...}, status: 200, statusText: "ok", .... }
Ответ №2:
Похоже response.data.response.status
, не определено.
Поместите a console.log(response)
над строкой, в которой вы ее вызываете, и проверьте правильную структуру.
Скорее всего, будет response.status
Комментарии:
1. я выполнил JSON.parse(response.status) (работал) с console.log(ответ). Появляется новая ошибка: не перехвачено (в обещании) NavigationDuplicated: избегается избыточная навигация к текущему местоположению: «/ despesas».
2. Вероятно, это связано с тем, что вы отправляете этот запрос из / despesas route
3. Попробуйте const path =
/despesas
if (this.$route . путь !== путь) this.$router.push(путь)4. Обратите внимание, что подсказка маршрута — это своего рода обходной путь. Вероятно, вам следует исправить свои маршруты или перенаправление.