记录一下 Nuxt3 接入 Sentry 的过程和踩过的坑
Sentry for Nuxt 的官方包 @nuxtjs/sentry
目前只支持 Nuxt2,它的开发者表示没有动力为 Nuxt3 开发这个模块。
在我自己为 Nuxt3 接入 Sentry 时还是踩了不少坑的,前后花的时间至少有 5 个小时,这里直接贴出最后可用的代码。
Sentry Module
我把 sentry 相关的代码都封装到了 Nuxt Module 中,不过没有花心思设计配置项,都是直接读取 public runtime config,所以有些地方需要按自己的情况去修改,需要修改的地方都已标注。
然后在 Nuxt 中添加 sentry 配置,启动服务时设置环境变量 SENTRY_DSN
或 NUXT_PUBLIC_SENTRY_DSN
即可。
其他工具类:
Sentry Replay
懒加载 Sentry Replay 插件
这里单独写一个 Sentry.vue
组件来懒加载 replay 插件是处于性能考虑,不用 hooks 实现的原因是我试过了 app:mounted
等 hook 懒加载时,控制台会出现大量警告。
在 app.vue
中引入这个组件:
手动上报 Sentry
Sentry 会默认监控 vue 组件异常并上报,手动上报时只需要用 useSentry
这个 composable
Nitro Server 的报错也会自动上报,手动上报的话可以用 event.context.$sentry
: