Axios: 422 tanggapan tidak ditolak

Dibuat pada 22 Feb 2017  ·  3Komentar  ·  Sumber: axios/axios

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));
      });
  };
}

Kode sumber di sini

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!

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:

return error

dan saya memecahkan masalah dengan menulis:

return Promise.reject(error);

Semua 3 komentar

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);
Apakah halaman ini membantu?
0 / 5 - 0 peringkat