Есть модуль.Это регистратор.Он использует теги, чтобы показать, откуда пришло сообщение.Примерно так:
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;
}
}
Но это не дает нужного результата.Так что делать?Любая помощь будет оценена.Спасибо заранее.