66

POSTユーザーのパスワードを更新するためにサーバーにリクエストを行うアクションがありますが、チェーンされた catch ブロックでエラーを処理できません。

return axios({
  method: 'post',
  data: {
    password: currentPassword,
    new_password: newPassword
  },
  url: `path/to/endpoint`
})
.then(response => {
  dispatch(PasswordUpdateSuccess(response))
})
.catch(error => {
  console.log('ERROR', error)
  switch (error.type) {
    case 'password_invalid':
      dispatch(PasswordUpdateFailure('Incorrect current password'))
      break
    case 'invalid_attributes':
      dispatch(PasswordUpdateFailure('Fields must not be blank'))
      break
  }
})

エラーをログに記録すると、次のように表示されます。

エラーがログに記録されました

ネットワークタブを確認するとレスポンスボディは見えるのですが、なぜか値にアクセスできません!

ネットワークタブ

私は無意識のうちにどこかで間違いを犯しましたか?別のリクエストからの他のエラーをうまく処理しているためですが、これを解決できないようです。

4

7 に答える 7

64

getUserList() {
    return axios.get('/users')
      .then(response => response.data)
      .catch(error => {
        if (error.response) {
          console.log(error.response);
        }
      });
  }

エラーオブジェクトで応答を確認してください。探しているオブジェクトが含まれているので、実行できますerror.response.status

ここに画像の説明を入力

https://github.com/mzabriskie/axios#handling-errors

于 2017-04-05T11:59:04.020 に答える
7
axios.post('http://localhost:8000/api/auth/register', {
    username : 'test'
}).then(result => {
    console.log(result.data)
}).catch(err => {
    console.log(err.response.data)
})

エラー応答を取得するキャッチを追加 ==>err.response.data

于 2020-04-04T11:27:10.603 に答える
1

if else ステートメントを次のようにインラインで使用できます。

.catch(error => {
    dispatch({
        type: authActions.AUTH_PROCESS_ERROR,
        error: error.response ? error.response.data.code.toString() : 'Something went wrong, please try again.'
    }); 
});
于 2017-03-12T11:43:50.187 に答える