Итак, я придумал два решения этой проблемы.
===
Первый - очень обходной путь дампа, но на самом деле это может быть полезно в некоторых конкретных случаях.
В саге, прямо перед тем, как мы вызываем функцию с вызовом axios внутри, у нас есть переменная для ошибок и обратный вызов, который устанавливает эту переменную:
let errorResponseData = {};
const errorCallback = (usefulErrorData) => {
errorResponseData = usefulErrorData;
};
Тогда - в методе axios мы имеем это:
export const createBlaBla = (payload, errCallback) => {
return axios.post('/some-url', payload)
.then(response => response)
.catch(err => {
if (err && err.response.data && typeof errCallback === 'function') {
errCallback(err.response.data);
}
return err;
});
}
Таким образом, когда мы делаем запрос и сервер возвращает ошибки - мы будем вызывать обратный вызов и сообщать об ошибках от сервера. Таким образом, в саге, у нас есть ошибки в переменной, и мы можем использовать ее по своему желанию.
===
Однако другое решение пришло ко мне с другого форума.
У меня проблема в том, что в методе с вызовом axios у меня есть catch
, что означает, что ошибки не будут пузыриться в генераторе. Так что - если мы изменим метод с помощью вызова axios, как это:
export const createBlaBla = (payload) => {
return axios.post('/some-url', payload)
}
Тогда в выражении catch
в саге мы получим реальную ошибку бэкэнда.
Надеюсь, это поможет кому-то еще:)