Перейти к содержимому

Модуля для 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, чтобы повесить свои замеры на спан страницы.