Table of contents

NodeJs

npm install @hawk.so/nodejs --save

или

yarn add @hawk.so/nodejs

Для CommonJS-проектов

const HawkCatcher = require('@hawk.so/nodejs').default;

Для ESM-проектов

import HawkCatcher from '@hawk.so/nodejs';

Инициализируйте HawkCatcher в точке входа приложения, передав токен проекта.

const HAWK_TOKEN = 'ВАШ_ТОКЕН_ИНТЕГРАЦИИ'; HawkCatcher.init(HAWK_TOKEN);

HawkCatcher автоматически регистрирует обработчики для:

  • uncaughtException
  • unhandledRejection

Если вы не хотите автоматически подключать обработчики глобальных исключений, используйте параметр disableGlobalErrorsHandling.

HawkCatcher.init({ token: HAWK_TOKEN, disableGlobalErrorsHandling: true, });

В этом случае события можно отправлять вручную.

Можно задать глобальный context, который будет добавляться ко всем событиям.

HawkCatcher.init({ token: HAWK_TOKEN, context: { myOwnDebugInfo: '1234' } });

Для отдельного события можно передать дополнительный контекст.

try { throw new Error('User not found'); } catch (e) { HawkCatcher.send(e, { myOwnDebugInfo: '1234' }); }

Этот объект будет объединён с глобальным context, если он задан.

После инициализации можно вручную отправлять ошибки из try/catch в любом месте проекта.

Для этого импортируйте HawkCatcher и вызовите метод .send().

try { throw new Error('My lovely error'); } catch (e) { HawkCatcher.send(e); }

Если HawkCatcher не был инициализирован, метод .send() ничего не сделает.

Третьим аргументом можно передать информацию о пользователе.

Доступные поля:

Поле Тип Обязательное Описание
id string | number да Идентификатор пользователя
name string нет Имя пользователя
url string нет Ссылка на профиль пользователя
image string нет Ссылка на аватар пользователя

Пример:

try { throw new Error('Cannot create a new post'); } catch (e) { HawkCatcher.send(e, {}, { id: 1234, name: 'Taly' }); }

Для фильтрации данных перед отправкой используйте хук beforeSend().

Возможные варианты:

  • Вернуть изменённое событие — будет отправлена модифицированная версия
  • Вернуть false — событие не будет отправлено
  • Вернуть любое другое значение — считается некорректным результатом, и будет отправлено исходное событие, а в лог попадёт предупреждение

Пример удаления чувствительных данных:

HawkCatcher.init({ token: 'INTEGRATION TOKEN', beforeSend(event) { if (event.user && event.user.name) { delete event.user.name; } return event; } });

Пример полной отмены отправки события:

HawkCatcher.init({ token: 'INTEGRATION TOKEN', beforeSend(event) { if (event.title.includes('ignore-me')) { return false; } return event; } });