Модуля для Nuxt пока нет. В приложении на Nuxt 3 подключите SDK в клиентском плагине через vueIntegration — ту часть @buglapse/vue, которую init() добавляет за вас:
ts
// plugins/buglapse.client.ts
import { init } from '@buglapse/vue'
export default defineNuxtPlugin((nuxtApp) => {
const router = useRouter()
init({
app: nuxtApp.vueApp,
router,
dsn: useRuntimeConfig().public.buglapseDsn,
release: useRuntimeConfig().public.release,
})
})Или, если вы вызываете собственный init() из @buglapse/browser:
ts
import { init } from '@buglapse/browser'
import { browserTracingIntegration } from '@buglapse/browser/integrations'
import { vueIntegration } from '@buglapse/vue'
init({
dsn: '{dsn}',
integrations: [
browserTracingIntegration({ instrumentNavigation: false }),
vueIntegration({ app: nuxtApp.vueApp, router }),
],
})vueIntegration принимает app, router, routeLabel и attachProps. Переходы она трейсит, только если подключена browserTracingIntegration, и у той должно быть instrumentNavigation: false — иначе смены истории тоже начнут переходы, параллельно роутеру.
Nuxt ставит собственный errorHandler до запуска плагинов; он по-прежнему вызывается после того, как ошибка поймана, так что хуки vue:error и страница ошибки работают как раньше.
Что это не покрывает:
- ошибки, о которых Nuxt сообщает только через хук
app:error(упавший плагин, фатальная ошибка при старте), — пересылайте их черезnuxtApp.hook('app:error', (error) => captureException(error)); - серверную часть: используйте
@buglapse/nodeв плагине Nitro; - фазы гидратации и отрисовки как спаны. Используйте
getActiveRootSpan()иonSpanEnd, чтобы повесить свои замеры на спан страницы.