Как правильно связать? - PullRequest
0 голосов
/ 27 ноября 2018

Есть модуль.Это регистратор.Он использует теги, чтобы показать, откуда пришло сообщение.Примерно так:

require('mymodule')('tag');

Его код выглядит так:

let place = null;

const l = function (text) {
  process.stdout.write(place + text);
}

module.exports = function (where) {
 place = where;
 return l;
}    

Тогда мне понадобились некоторые функции.Мне нужно, чтобы сообщение всегда оставалось в нижней части консоли.Поэтому я создал функцию, подобную l.hold ('my_message').Он перезаписывает все выходные данные, отправленные в «l», и сохраняет сообщение всегда внизу.Работает вполне нормально.Но только когда этот модуль вызывается только из одного файла.Но когда я использую этот модуль из разных файлов (конечно, используя разные теги), l.hold перезаписывает только вывод файла, в который он был вызван, но не из других.Как я понимаю, это происходит потому, что были созданы разные экземпляры модуля, по одному на каждый файл, вызвавший его.И далее, я полагаю, мне нужно использовать что-то вроде синглтона.Я сделал что-то вроде

module.exports = {
  tag (place) {
    function logger (...text) {
      l(place, ...text);
    }
   logger.error = l.error.bind(null, place);
   logger.debug = l.debug.bind(null, place);
   logger.info = l.info.bind(null, place);
   logger.warn = l.warn.bind(null, place);
   logger.hold = l.hold;
   logger.stop = l.stop;

   return logger;
 }
}

Но это не дает нужного результата.Так что делать?Любая помощь будет оценена.Спасибо заранее.

...