NodeJS + Expressでエラー処理を取り除く

Jaydipsinh Vaghela)(2020年9月1日)

写真提供: スプラッシュ解除

Javascriptでのエラー処理は少しです始めたばかりのときは少し苦痛です。今日は、NodeJS + Expressでエラーを処理する方法と、さまざまな方法について説明します。

この記事を書いている理由は、私がジュニアの役割のためにインタビューを受けるときに、通常、存在しないルートを処理する方法や、NodeJSでAPIを作成する際のエラーを処理する方法について質問しますか?多くの開発者はこの質問に答えることができません。したがって、この記事は特にエントリーレベルまたはジュニア開発者を対象としています。

NodeJS(v12.18。*)、Express(v4.17。*)、およびESLintを Airbnbコーディングスタイルのガイドライン。確認したい場合は、参考のために Githubリンクを添付しました。

ここで取り上げる内容は次のとおりです。

  • expressがルートとそのマッピングを定義する方法を理解する
  • ルートが存在しない場合にAPIを処理するためのエクスプレスミドルウェアを作成する
  • コードがランダムエラーを生成した場合に何が起こるかを理解する
  • あらゆる種類のエラーを処理するためのエクスプレスミドルウェアを作成する

エクスプレスルートメカニズム &ミドルウェアが存在しません

app.use()またはexpress.Router()メソッドを使用して表現するルートを追加できます。この方法を使用する場合、expressは、登録されたルートのリストを追加するために上から下へのアプローチに従います。したがって、APIを呼び出すと、サーバーは一致するルートを上から下に検索し始めます。このプロセス中に、最初に一致したルートでリクエストを処理します。 Expressを使用して同じルートを複数回作成できますが、このアプローチでは、最初のルートが常に実行されてリクエストを処理します。

誰かが存在しないAPIエンドポイントにアクセスしようとすると、次のようになります。サーバーからの予期しないエラー。ベストプラクティスとして、このような状況に対処する必要があります。これをUXの観点から考えると、フロントエンドに予期しないエラーをスローすることはできません。このような状況を処理するには、ルートが存在しない状況を処理するエクスプレスミドルウェアを使用する必要があります。コードの例を次に示します。

ミドルウェアにルートが存在しません

このミドルウェアは、ルート定義コードの最後のステートメントである必要があります。このミドルウェアの後に定義された他のルートは実行されないため、このミドルウェアの位置は非常に重要です。 expressがルートの検索を開始し、一致するルートが見つからない場合、expressはこのミドルウェアのコードを実行し、適切なアクションを実行できます。基本的に、フロントエンド担当者が適切なアクションを実行できるように、応答に適切なエラーメッセージを表示して応答します。

ビジネスロジックのエラー&その処理方法

ユーザーエクスペリエンスは、Webアプリケーションの成功の鍵です。エラーがあっても、常にポジティブな雰囲気のユーザーインタラクションが必要です。私たちは毎日大量のコードを書いていますが、エラーなしでコードを書くことは不可能です。特にジュニアレベルの場合は、エラーが発生する可能性が高くなります。 APIのエクスプレスを処理するときに、コードが正常にクラッシュすると、エラーオブジェクト全体がリクエストへの応答として渡されますが、これはどのような状況でも無効です。適切なエラーメッセージをユーザーに渡すことができるように、このような方法でコードのクラッシュを処理する必要があります。 Expressのエラーを処理するためにミドルウェアを追加するために抜粋したコードを次に示します。

ミドルウェアの処理エラー

これを使用すると、ビジネスロジック内で生成されたエラーがエラーオブジェクト内に返されます。エラーオブジェクトには、エラーに関する完全なスタックトレースが含まれています。情報を適切に処理するために、応答オブジェクトからステータスを取得できます。ステータスコードが見つからない場合は、デフォルトの500ステータスコードを返します。これは、サーバーで問題が発生したことを意味します。エラートレースオブジェクト内には、エラーを説明するために人間が読める形式のメッセージが常にあります。

本番ビルドを検討する際に、ここにいくつかの高度な情報を追加します。すべてのエラーに対して適切なアクションを実行するために、どこかにアラートを送信する必要があります。通常、私は開発者チームに電子メールアラートを送信することを好みます。または、 BugSnag などのエラー追跡ソフトウェアを使用してあらゆる種類のものを追跡できます。

以下は、動作するコードを含むコードスニペットであるため、ローカルで実行して操作し、理解を深めることができます。 リポジトリの完全なコードアクセスと動作するコードを見つけることもできます。

GitHubリンク:https://github.com/Jaydipsinhv/express-demo

エラー処理を備えた完全に機能するコード

この記事が、ジュニア開発者が例外処理をより明確にするのに役立つことを願っています。