Версия для библиотек

Tracer Lite предназначен для браузерных библиотек, которые встраиваются в другие приложения. С его помощью можно собирать ошибки своей библиотеки отдельно от ошибок основного приложения.

В Lite доступны следующие модули:

МодульОписание
initTracerErrorОтвечает за сбор глобальных событий и ручную регистрацию ошибок в проекте. Подробнее в Crash и Non-Fatal
initTracerLogОтвечает за хранение логов событий, предшествующих сбою. Подробнее в Добавление информации к событиям
initTracerPluginsОтвечает за инициализацию плагинов SDK. Подробнее в Плагины
initTracerErrorUploaderОтвечает за отправку данных о событиях в сервис.

Инициализация

При подключении Lite учитывайте следующие отличия:

  • Модули импортируются из @apptracer/sdk/lite
  • Первым аргументом инициализатора указывается имя экземпляра, а вторым — конфигурация. Выберите уникальное имя для библиотеки и используйте его во всех её модулях SDK.
  • initTracerError не будет автоматически подписываться на необработанные ошибки – для этого существует опция enableUnhandledErrorsListeners в конфигурации модуля.

Пример инициализации:

import { initTracerError, initTracerErrorUploader } from '@apptracer/sdk/lite'; const componentName = 'myModule'; // уникальное имя экземпляра SDK для вашей библиотеки initTracerError(componentName); initTracerErrorUploader(componentName, { versionName: BUILD_VERSION_NAME, // строка с версией приложения из вашей сборки appToken: 'appToken из настроек в Трейсере' });

Изоляция и доступ к экземплярам

Если модуль уже подключён для выбранного имени, повторный вызов его инициализатора вызовет исключение. Для доступа к нему из другого места приложения используйте getTracerModules(name). То же имя нужно передавать в addTracerPlugin(name, plugin):

import { getTracerModules } from '@apptracer/sdk/lite'; getTracerModules('myModule').error?.error(new Error('Library operation failed'));

У каждого экземпляра Lite свои контекст ошибок, ключи, пользователь, плагины и ограничения частоты отправки. Вызовы setTracerComponentName и отключение основной версии SDK на них не влияют.

Если включить в Lite глобальные обработчики ошибок, они могут получать те же события, что и основная версия SDK. Основная версия не блокирует эти обработчики.

В Lite также доступны initTracerPerformanceMemory, TracerSpanProcessor, TracerUploadSpanExporter и TracerContextManager. Модулей сессий, async-стеков, Web Vitals, initTracerSdk и публичного управления паузой в Lite нет. Для старых браузеров используйте @apptracer/sdk/legacy/lite; это тот же API с ES5-синтаксисом, без полифилов.

Телеметрия и асинхронный контекст

Для процессора передайте имя экземпляра: new TracerSpanProcessor('myModule'). Настройка провайдера и экспортёра описана в OpenTelemetry.

При использовании TracerContextManager со StackContextManager без async-модуля контекст не переносится автоматически через таймеры, Promise и события. Привязывайте такие обработчики явно через context.bind(...).

Основное приложение может подключить initTracerErrorAsyncStack(), а библиотека с Lite — TracerContextManager. Зарегистрируйте менеджер в общем OpenTelemetry API. Порядок подключения не важен, но контекст будет переноситься только для новых обработчиков. Ограничения нативного await описаны в разделе о контексте.