アプリケーションの多くの部分で[email protected]を使用するプロジェクトがあります( 0.15.3にアップグレードしても問題は解決しませんでした)。 アプリの他のすべての部分では、 .catch()
422の応答コードを使用できます。 最近、1つのリクエストが422レスポンスを取得するpromiseを解決していることに気付きました。 アプリケーションの他のすべての部分では、422によりaxiospromiseが拒否されます。
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));
});
};
}
.then()
に次の行を追加することで、この問題を回避することができました。
if (resp instanceof Error) { throw resp; }
これは問題なく機能しますが、この特定の422が(拒否されるのではなく)解決される理由についてはまだ混乱しています。 また、いくつかのインターセプターを使用していますが、他のリクエストに対して問題は発生していません。
axiosが422を拒否するのではなく解決するような状況はありますか? その他の情報が必要な場合はお知らせください。
助けてくれてありがとう!
確認済み。 redux-saga
でaxiosを使用しているときにも同様のことが見られますが、一部の422は拒否された約束として処理されていません。
気にしないで、私の問題を見つけました。 インターセプターは、エラーをアプリ層に適切に伝達していませんでした。 😳
この問題を調査したところ、実際にはコールスタックのどこかに隠されたローカルタイプのエラーであることがわかり、Axiosの問題ではなくローカルの問題であると私は信じました。
アップデート:
いくつかの調査の後、私はこれを悪い「応答拒否」インターセプターに突き止めることができました。
インターセプター内で私は書いた:
return error
代わりに次のように記述して問題を解決しました。
return Promise.reject(error);
最も参考になるコメント
この問題を調査したところ、実際にはコールスタックのどこかに隠されたローカルタイプのエラーであることがわかり、Axiosの問題ではなくローカルの問題であると私は信じました。
アップデート:
いくつかの調査の後、私はこれを悪い「応答拒否」インターセプターに突き止めることができました。
インターセプター内で私は書いた:
代わりに次のように記述して問題を解決しました。