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