Kami memiliki proyek yang menggunakan [email protected] (meningkatkan ke 0.15.3 tidak menyelesaikan masalah) di banyak bagian aplikasi. Di semua bagian lain aplikasi, kami dapat .catch()
422 kode respons. Baru-baru ini kami memperhatikan bahwa 1 permintaan sedang menyelesaikan janji yang mendapat respons 422. Di semua bagian lain dari aplikasi kami, 422 menyebabkan janji axios ditolak.
export function addTool(name: string): Thunk {
return (dispatch, getState) => {
Axios
.post<Tool>(API.current.toolsPath, { name })
.then(resp => {
if (resp instanceof Error) { throw resp; }
success("Tool has been saved.", "Success");
dispatch(addToolOk(resp.data));
})
.catch((e: Error) => {
dispatch(addToolNo(e));
error(prettyPrintApiErrors(e));
});
};
}
Saya dapat mengatasi masalah ini dengan menambahkan baris berikut ke .then()
saya:
if (resp instanceof Error) { throw resp; }
Yang berfungsi dengan baik, tetapi saya masih bingung mengapa 422 khusus ini diselesaikan (daripada ditolak). Kami juga memiliki beberapa pencegat yang digunakan, tetapi mereka tidak menyebabkan masalah untuk permintaan lain yang kami buat.
Apakah ada keadaan yang menyebabkan axios menyelesaikan 422 daripada menolaknya? Tolong beri tahu saya jika Anda memerlukan informasi lain.
Terima kasih untuk bantuannya!
Dikonfirmasi. Saya juga melihat sesuatu yang serupa saat menggunakan aksioma dengan redux-saga
di mana beberapa 422 tidak ditangani sebagai janji yang ditolak.
Sudahlah, menemukan masalah saya. Pencegat tidak menyebarkan kesalahan dengan benar ke lapisan aplikasi, aduh! 😳.
Setelah menyelidiki masalah ini, saya menemukan bahwa itu sebenarnya adalah kesalahan tipe lokal yang tersembunyi jauh di dalam tumpukan panggilan di suatu tempat, membuat saya percaya bahwa itu adalah masalah lokal daripada masalah dengan Axios.
MEMPERBARUI:
Setelah beberapa penyelidikan, saya dapat menentukan ini ke pencegat "respons ditolak" yang buruk.
Di dalam pencegat saya menulis:
return error
dan saya memecahkan masalah dengan menulis:
return Promise.reject(error);
Komentar yang paling membantu
Setelah menyelidiki masalah ini, saya menemukan bahwa itu sebenarnya adalah kesalahan tipe lokal yang tersembunyi jauh di dalam tumpukan panggilan di suatu tempat, membuat saya percaya bahwa itu adalah masalah lokal daripada masalah dengan Axios.
MEMPERBARUI:
Setelah beberapa penyelidikan, saya dapat menentukan ini ke pencegat "respons ditolak" yang buruk.
Di dalam pencegat saya menulis:
dan saya memecahkan masalah dengan menulis: