nodejs + expressを使用してサーバー側とクライアント側のエラーに対処するための最良の方法は何ですか

mr.abdo

応答(要求)のエラーに対処するための最良の方法を知りたいのですが。リクエストを受け取るこのルートがあります:

app.get('/getInfo', function (req, res, next) {
    let obj = {}
    try {
        obj = { 
            ...                
            date: lastUpdatedDate('./utils/appVersion.js'),
            ...
        }
        res.status(200).send(obj)
    } catch (error) {
        console.log(error.message)
        res.send({error: "The data wasn't load"})
    }       
})

そして、リクエストが行われるこの関数

getInfo () {
    axios.get(process.env.REACT_APP_HOST + '/getInfo')
      .then(resp => {
        this.appInfoHandler(resp.data)
      })
      .catch(function (error) {    
        console.log(error)
      })
  }

サーバー側でエラーが発生した場合、エラーに対処する最善の方法は何ですか?このコードブロックにディレクトリが存在しないと仮定しましょう。lastUpdatedDate('./directoreyDoesntExists/appVersion.js'),

だから私のコードはcatchブロックに行きます。

このようなエラーを送信する必要があります:

res.send({error: "The data wasn't load"})

このようなステータスを設定する必要がありますか?

  res.status(500).send({error: "The data wasn't load"})

または、別のステータスコードでステータスを設定する必要がありますか?

これに基づいて、フロントエンドメソッドでgetInfo()エラーを取得し、Webインターフェイスにエラーメッセージを表示するための最良の方法は何ですか?

私はこのようなブロックのif else内側を行う必要があり.thenますか?

 getInfo () {
      axios.get(process.env.REACT_APP_HOST + '/getInfo')
      .then(resp => {
            if(resp.status === 200){
                 this.appInfoHandler(resp.data)
            }else if (resp.status === 400){
                  //print error message on web interface
            }else if (resp.status === 500){
                  //print error message on web interface
          })
          .catch(function (error) {    
            console.log(error)
          })

または、このcatchようなブロックで直接このエラーに対処する必要があります

getInfo () {
    axios.get(process.env.REACT_APP_HOST + '/getInfo')
      .then(resp => {
        this.appInfoHandler(resp.data)
      })
      .catch(function (error) {    
        //print error message on web interface
      })
  }
過酷なマンダルギ

200以外のステータスコードは失敗を意味するため、これらのif-elseステートメントを使用する必要はありません。より良い代替策は、エラーをキャッチし、そのまま応答とともに送信することです。利点は、ステータスコードをハードコーディングせずに発生したタイプのエラーを受け取ることです。(たとえば、ここではステータスコードを400失敗と見なします)

 .catch(function (error) {    
        //print error message on web interface
        res.status(400).send(JSON.stringify(error, undefined, 2));
      });

stringifyメソッドを使用すると、コンソールにも正確なエラーを出力できます。

.catch(function (error) {    
            console.log(JSON.stringify(error, undefined, 2));
          });

ここでのstringifyメソッドのパラメーターは次のとおりです。

  1. エラーオブジェクト

  2. undefined:オブジェクト内のキーをフィルタリングするためのキーを含む配列(ここではエラー)。この配列に存在するすべてのキーは、フィルターで除外されていないキーのみです。

  3. 2:オブジェクト表現に空白を導入するために使用されます

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

Related 関連記事

ホットタグ

アーカイブ