Как войти из пакета NPM, не форсируя библиотеку журналов - PullRequest
0 голосов
/ 13 ноября 2018

Я пишу корпоративный пакет npm (в машинописном тексте) и портирую в него существующий код.В существующем коде есть несколько операторов console.log, console.warn и console.error.Вот так:

try {
    const foo = getFoo("bar");
    return callback(undefined, foo);
} catch (e) {
    console.error(e);
    return cb(new httpErrors.BadRequest("Some message"));
}

Итак, что происходит:

  • зарегистрировать ошибку
  • вызвать обратный вызов с другой ошибкой, не передавая исходную ошибку

Это поведение, которое мы хотим, так как мы не хотим возвращать исходное сообщение об ошибке, но мы хотим, чтобы оно было в наших журналах.

Теперь, когда я перехожу кпакет, я хочу применить некоторые передовые практики и удалить вызовы console.Это правило tslint, и я согласен с тем, что автору пакета не нужно заполнять журналы пользователя пакета.

Так что будет лучшим подходом здесь?

Я читал о пакете debug, но это только для целей разработки.Кроме того, это означало бы, что у нас не будет наших сообщений журнала, если мы не установим DEBUG=...

Мне интересно, если использование синглтона EventEmitter в моем пакете является вариантом.Но опять же, синглтон считается антипаттерном.

И я не хочу добавлять библиотеку журналов в качестве зависимости, потому что, как автор пакета, я не могу сказать, какую библиотеку журналов использовать..

Последний вариант, о котором я подумал, - разрешить передачу функции ведения журнала, которую я затем могу вызвать, но мне это кажется немного неприятным.

Так что же является предпочтительным методомразрешить запись сообщений из библиотеки (TypeScript / npm)?

(Если он вообще есть; я довольно новичок в экосистеме Node / TypeScript).

1 Ответ

0 голосов
/ 14 ноября 2018

Итак, каков предпочтительный метод, позволяющий регистрировать сообщения из библиотеки (TypeScript / npm)?

Вы хотите обработать поведение ошибки по умолчанию и в то же время предоставить потребителю возможность просматривать сообщения об ошибках.

Ваши варианты буквально

  1. Возьмите нулевую зависимость и предоставьте эти сообщения вне диапазона, например, используя источник событий
  2. Получите зависимость от библиотеки журналов по вашему выбору.

Я бы с радостью выбрал вариант 1. Для TypeScript я также использовал бы безопасную версию, например https://basarat.gitbooks.io/typescript/docs/tips/typed-event.html

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...