instrumentation.js
instrumentation.js|ts
文件用于在应用中集成可观测性工具,使你能够跟踪性能和行为,以及调试生产环境中的问题。
要使用它,请将文件放在应用的根目录下,或者如果使用 src
目录,则放在其中。
该文件导出一个 register
函数,在初始化新的 Next.js 服务器实例时只调用一次。register
可以是异步函数。
你可以选择导出一个 onRequestError
函数,将服务器错误跟踪到任何自定义可观测性提供程序。
- 如果你在
onRequestError
中运行任何异步任务,请确保它们被等待。当 Next.js 服务器捕获到错误时,将触发 onRequestError
。
error
实例可能不是原始抛出的错误实例,因为如果在服务器组件渲染期间遇到错误,它可能会被 React 处理。如果发生这种情况,你可以使用错误上的 digest
属性来识别实际的错误类型。
该函数接受三个参数:error
、request
和 context
。
error
:捕获的错误本身 (类型始终为 Error
),以及 digest
属性,这是错误的唯一 ID。
request
:与错误相关的只读请求信息。
context
:错误发生的上下文。这可以是路由器类型 (App 或 Pages 路由器),和/或 (服务器组件 ('render'
)、路由处理程序 ('route'
)、服务器操作 ('action'
) 或中间件 ('middleware'
))。
instrumentation.js
文件在 Node.js 和 Edge 运行时都可以工作,但是你可以使用 process.env.NEXT_RUNTIME
来针对特定的运行时。
版本 | 变更 |
---|
v15.0.0-RC | 引入 onRequestError ,instrumentation 稳定版 |
v14.0.4 | 支持 Turbopack 的 instrumentation |
v13.2.0 | 引入 instrumentation 作为实验性功能 |