Почему у меня не срабатывает catch в Vue 3?
Пытаюсь вывести ошибку на экран в модальное окно, но модальное окно срабатывает только когда error !== null, и после try, если что-то пошло не так, должна сработать catch, но по какой-то причине она просто не срабатывает, браузер ее пропускает словно ее вообще не существует, в итоге переменная error остается null как изначально, и ошибка не выводится в модальном окне, но в самой консоле видно что ошибка есть, и при логировании в actions.js она выводится в консоль, но в компоненте как я сказал выше catch пропускается.
VUEX Store console.warn срабатывает и показывает что ошибка есть => actions.js
async auth(context, payload){
let url = 'http://linktofirebase'
const response = await fetch(url, {
method: "POST",
body: JSON.stringify({
email: payload.email,
password: payload.password,
returnSecureToken: true,
}),
});
const responseData = await response.json();
if (!response.ok) {
const error = new Error(
responseData.message || "Failed to authenticate. Check your login data."
);
console.warn("Response isnt ok: " + error);
throw error;
}
}
Component в которую не передается ошибка => UserAuth.vue
async authorization(){
try {
if (this.mode === "login") {
console.log("Login");
await this.$store.dispatch("login", actionPayload);
} else {
console.log("Signup");
await this.$store.dispatch("signup", actionPayload);
}
// Try срабатывает и дальше он просто проходит мимо catch, даже если я вызвал ошибку.
} catch (error) {
console.log("Error");
this.error = error.message || "Failed to authenticate, try later.";
}
console.log(this.error);
}
В чем может быть проблема?
Ответы (1 шт):
Проблема решена, оказывается я забыл добавить "return" к двум функция выше
login(context, payload) {
return context.dispatch("auth", {
...payload,
mode: "login",
});
},
signup(context, payload) {
return context.dispatch("auth", {
...payload,
mode: "signup",
});
},
И по этой причине я не получал ошибку в компонент.