エラーハンドリング
このドキュメントでは、Next.js アプリケーションの開発、サーバーサイド、クライアントサイドのエラーを処理する方法について説明します。
開発時のエラー処理
Next.js アプリケーションの開発段階でランタイムエラーが発生すると、オーバーレイが表示されます。これは、ウェブページを覆うモーダルです。オーバーレイは、pnpm dev
、npm run dev
、yarn dev
、または bun dev
を使用して開発サーバーを実行している場合にのみ表示され、本番環境では表示されません。エラーを修正すると、オーバーレイは自動的に非表示になります。
オーバーレイの例は以下の通りです:
サーバーエラーの処理
Next.js はデフォルトで静的な 500 ページを提供し、アプリケーション内のサーバーサイドエラーを処理します。pages/500.js
ファイルを作成することで、このページをカスタマイズすることもできます。
アプリケーションに 500 ページがあっても、アプリユーザーに具体的なエラーは表示されません。
file not found
のような特定のランタイムエラーを処理するには、404 ページも使用できます。
クライアントエラーの処理
React の Error Boundaries は、アプリケーションの他の部分が引き続き機能するようにクライアント上の JavaScript エラーを優雅に処理する方法です。ページのクラッシュを防ぐだけでなく、カスタムのフォールバックコンポーネントを提供し、エラー情報をログに記録することもできます。
Next.js アプリケーションで Error Boundaries を使用するには、pages/_app.js
ファイルで、クラスコンポーネント ErrorBoundary
を作成し、Component
プロップをラップする必要があります。このコンポーネントは以下の責務を持ちます:
- エラーが発生した後、フォールバック UI をレンダリングする
- アプリケーションの状態をリセットする方法を提供する
- エラー情報をログに記録する
ErrorBoundary
クラスコンポーネントは、React.Component
を拡張して作成できます。例:
ErrorBoundary
コンポーネントは hasError
状態を追跡します。この状態変数の値は真偽値です。hasError
の値が true
の場合、ErrorBoundary
コンポーネントはフォールバック UI をレンダリングします。それ以外の場合は、子コンポーネントをレンダリングします。
ErrorBoundary
コンポーネントを作成したら、pages/_app.js
ファイルにインポートし、Next.js アプリケーションの Component
プロップをラップします。
React のドキュメントで Error Boundaries について詳しく学べます。
エラーの報告
クライアントエラーを監視するには、Sentry、Bugsnag、または Datadog などのサービスを使用します。