2017-01-25 7 views
2

私はaxios getメソッドを使用する関数を持っており、約束した戻り値には、接続しようとしているサービスが無効になっている状況を処理するためのエラー処理が追加されています。私はメッセージを見ることができ、カールを使用する場合axiosがエラーのメッセージにアクセスできない

axios.get('/someurl') 
    .then(() => { 
     // this does not matter 
    }) 
    .catch((err) => { 
     logger.error(TAG, 'postCreateVm', err); 
     return reply(Boom.forbidden(err.message)); 
    }); 

、レスポンスのステータスは403です:

# curl -X GET localhost:3000/someurl 
{ 
    "message": "abort" 
} 

問題は、私は「メッセージ」プロパティにアクセスしようとしたとき、私は何を取得ということですが、私は知っていますそれはそこにあります!私はそれにアクセスすることができるはずの文書によると

を(私も成功しません同様err.response.data使用しようとしました):axios handling errors

このメッセージにアクセスするための適切な方法は何ですか?

答えて

5

私は彼のコードを見ましたが、正しい応答がエラーに表示されますが、axiosでは、settle.jsはそれを一般的な応答でマスクします。あなたは、文字列化されたJSONとしてあなたのcatchブロックにエラーオブジェクトをログインすることで、サーバの応答を見ることができます:私のキャッチ

error.response.data.message 
+0

それはまた、サーバー側に依存します。私はPythonとFlaskで自分のサーバー側を持っていて、エラーメッセージが送信されていないことが判明しました(私はtry-catchを持っていてcatchブロックで同じ例外を再起します)。 http://flask.pocoo.org/docs/0.12/patterns/apierrors/ここで説明しているようなエラーハンドラを登録した後、この答えのようにエラーメッセージにアクセスできました。 – Mahdi

1

console.log('caught:::', JSON.stringify(response, null, 2)) 

だから私の場合、私はとして返され、エラーにアクセスして、それを修正しました関数はエラーオブジェクトの代わりに応答プロパティを受け取りました。だから、メッセージにアクセスするには、私は使用していた:

err.data.message 
関連する問題