error.js
error ファイルを使用すると、予期しないランタイムエラーを処理し、フォールバック UI を表示できます。

error.js
はルートセグメントとそのネストされた子要素を React エラー境界でラップします。境界内でエラーが発生すると、error
コンポーネントがフォールバック UI として表示されます。

知っておくと便利:
- React DevTools を使用すると、エラー境界を切り替えてエラー状態をテストできます。
- エラーを親のエラー境界まで伝播させたい場合は、
error
コンポーネントのレンダリング時にthrow
できます。
リファレンス
Props
error
error.js
クライアントコンポーネントに転送される Error
オブジェクトのインスタンス。
知っておくと便利: 開発中は、クライアントに転送される
Error
オブジェクトはシリアライズされ、デバッグしやすいように元のエラーのmessage
が含まれます。ただし、本番環境ではこの動作は異なり、エラーに含まれる可能性のある機密情報がクライアントに漏れるのを防ぎます。
error.message
- クライアントコンポーネントから転送されたエラーには、元の
Error
メッセージが表示されます。 - サーバーコンポーネントから転送されたエラーには、識別子付きの汎用メッセージが表示されます。これは機密情報の漏洩を防ぐためです。識別子
errors.digest
を使用して、対応するサーバーサイドのログと照合できます。
error.digest
スローされたエラーの自動生成ハッシュ。サーバーサイドのログで対応するエラーと照合するために使用できます。
reset
エラーの原因は一時的な場合があります。このような場合、再度試すことで問題が解決することがあります。
エラーコンポーネントは reset()
関数を使用して、ユーザーにエラーからの復旧を試みるよう促すことができます。実行されると、この関数はエラー境界のコンテンツを再レンダリングしようとします。成功すると、フォールバックエラーコンポーネントが再レンダリングの結果に置き換えられます。
例
グローバルエラー
あまり一般的ではありませんが、国際化を利用している場合でも、ルートレイアウトまたはテンプレートで global-error.js
を使用してエラーを処理できます。グローバルエラー UI は独自の <html>
タグと <body>
タグを定義する必要があります。このファイルは、アクティブ時にルートレイアウトまたはテンプレートを置き換えます。
カスタムエラー境界による優雅なエラー復旧
クライアントでのレンダリングが失敗した場合、ユーザーエクスペリエンスを向上させるために、最後にサーバーでレンダリングされた UI を表示すると便利です。
GracefullyDegradingErrorBoundary
は、エラーが発生する前に現在の HTML をキャプチャして保持するカスタムエラー境界の例です。レンダリングエラーが発生すると、キャプチャした HTML を再レンダリングし、ユーザーに通知する永続的な通知バーを表示します。
バージョン履歴
バージョン | 変更点 |
---|---|
v15.2.0 | 開発環境でも global-error が表示されるようになりました。 |
v13.1.0 | global-error が導入されました。 |
v13.0.0 | error が導入されました。 |