при обработке rest запроса с фронта. Ошибки на бэке - проблема бэка. Но фронт при этом падать не должен. А у меня axios падает с ошибкой когда бэк умирает.
И так, вот код функции:
instance.interceptors.response.use((response) => response, (error) => {
try {
if (error.response.status === 401 && error.response.config.url !== '/auth/login') {
localStorage.removeItem('jwt');
window.location = '/';
// store.dispatch(unAuthenticated());
}
} catch {
console.log(1);
}
return Promise.reject(error);
});
Где instance - axios.create({baseURL});
Try и Catch добавил что бы понять что происходит.
Логика функции: Я ожидаю что запрос будет выполнен с ошибкой и тогда проверю его код на авторизацию и если подтвердится теория, то клиента принудительно разлогинет из приложения.
Проблема в том, что объект error в этом уникальном случае вообще представляет из себя чер пойми что...
Вот его вывод в консоль:
Error: Network Error at createError (http://localhost:3000/static/js/vendors~main.chunk.js:7235:15) at XMLHttpRequest.handleError (http://localhost:3000/static/js/vendors~main.chunk.js:6729:14)
А после нажатия enter вот таким становится:
Error: Network Error
at createError (createError.js:16:1)
at XMLHttpRequest.handleError (xhr.js:84:1)
Куда бы копать в таком случае?
Просто "Network Error" это не то, что должно в interceptor обрабатываться Это же просто ошибка сетевого доступа. вот если сервер тебе код не вернул ошибки, значит ты до него не достучался Следовательно выполнять операцию разлогирования нет смысла: Мы же не убедились, что токен не валидный СЛедовательно игнорищь в interceptor эту ошибку и выводишь ее пользователю, по типу, если ответа нет, то "НЕ УДАЛОСЬ СВЯЗАТЬСЯ С СЕРВЕРОМ"
Спасибо! Хорошо, я с удовольствием выведу данное сообщение. Вот только как мне работать с данным объектом? Как мне понять что там Network Error? Там нет никакого поля которое можно было бы например сравнить со строкой "Network Error". Т.е. мой вопрос как идентифицировать что это "Network Error"?
Обсуждают сегодня