error.js
error 文件用于定义路由片段的错误边界 UI。
它可用于捕获服务端组件 (Server Components) 和客户端组件 (Client Components) 中发生的意外错误,并显示备用 UI。
参数
error
传递给 error.js
客户端组件的 Error
对象实例。
error.message
错误信息。
- 对于从客户端组件传递的错误,这将显示原始错误信息
- 对于从服务端组件传递的错误,这将显示通用错误信息以避免泄露敏感细节。可使用
errors.digest
来匹配服务端日志中的对应错误
error.digest
服务端组件抛出错误的自动生成哈希值。可用于匹配服务端日志中的对应错误。
reset
用于重置错误边界的函数。执行时,该函数会尝试重新渲染错误边界的内容。如果成功,备用错误组件将被重新渲染的结果替换。
可用于提示用户尝试从错误中恢复。
须知:
error.js
边界必须是**客户端组件**- 在生产构建中,从服务端组件传递的错误会被移除具体细节以避免泄露敏感信息
error.js
边界不会处理在同一片段的layout.js
组件中抛出的错误,因为错误边界嵌套在该布局组件内部
- 要处理特定布局的错误,请在布局的父级片段放置
error.js
文件- 要处理根布局或模板内的错误,请使用
error.js
的变体app/global-error.js
global-error.js
要专门处理根 layout.js
中的错误,请在根 app
目录中使用 error.js
的变体 app/global-error.js
。
须知:
global-error.js
激活时会替换根layout.js
,因此必须定义自己的<html>
和<body>
标签- 在设计错误 UI 时,使用 React 开发者工具 手动切换错误边界可能会有所帮助
not-found.js
not-found
文件用于在路由片段中抛出 notFound()
函数时渲染 UI。
版本历史
版本 | 变更 |
---|---|
v13.1.0 | 引入 global-error 功能 |
v13.0.0 | 引入 error 功能 |