error.js
errorファイルを使用すると、予期しないランタイムエラーを処理し、フォールバックUIを表示できます。
error.js
の仕組み
error.js
はルートセグメントとその入れ子になった子要素をReactエラーバウンダリでラップします。バウンダリ内でエラーがスローされると、error
コンポーネントがフォールバックUIとして表示されます。
補足:
- React DevToolsを使用して、エラーバウンダリを切り替えてエラー状態をテストできます。
Props
error
error.js
クライアントコンポーネントに転送されるError
オブジェクトのインスタンス。
補足:開発中、クライアントに転送される
Error
オブジェクトはシリアル化され、デバッグを容易にするために元のエラーのmessage
が含まれます。ただし、本番環境ではこの動作が異なり、エラーに含まれる潜在的に機密性の高い詳細情報をクライアントに漏洩するのを防ぎます。
error.message
- クライアントコンポーネントから転送されたエラーは、元の
Error
メッセージを表示します。 - サーバーコンポーネントから転送されたエラーは、識別子を含む一般的なメッセージを表示します。これは、機密性の高い詳細情報を漏洩するのを防ぐためです。
errors.digest
の識別子を使用して、対応するサーバーサイドのログと照合できます。
error.digest
スローされたエラーの自動生成されたハッシュ。サーバーサイドのログ内の対応するエラーと照合するために使用できます。
reset
エラーの原因は一時的な場合があります。そのような場合、再試行することで問題が解決する可能性があります。
エラーコンポーネントはreset()
関数を使用して、ユーザーにエラーからの復旧を促すことができます。実行すると、関数はエラーバウンダリのコンテンツを再レンダリングしようとします。成功した場合、フォールバックエラーコンポーネントは再レンダリングの結果に置き換えられます。
global-error.js
あまり一般的ではありませんが、国際化を利用する場合でも、app/global-error.js
を使用してルートレイアウトまたはテンプレートのエラーを処理できます。これはアプリディレクトリのルートに配置されます。グローバルエラーUIは独自の<html>
タグと<body>
タグを定義する必要があります。このファイルはアクティブな場合、ルートレイアウトまたはテンプレートを置き換えます。
補足:
global-error.js
は本番環境でのみ有効です。開発中は、代わりにエラーオーバーレイが表示されます。
not-found.js
not-found
ファイルは、ルートセグメント内でnotFound()
関数を呼び出した際にUIを表示します。
バージョン履歴
バージョン | 変更点 |
---|---|
v13.1.0 | global-error が導入されました。 |
v13.0.0 | error が導入されました。 |