Node Domains.
Это старый вопрос, я понимаю, но ни один из ответов не является полностью правильным.
Правда в том, что вы можете достичь этой функциональности, используя Node Domains.
Глобальные переменные, как правило, считаются плохими в использовании, потому что они нарушают инкапсуляцию, и правильно инкапсулированное приложение является первым строительным блоком для хорошего дизайна, потому что приложение будет легче читать, тестировать и реорганизовывать.
При этом я лично сталкивался со многими хорошими вариантами использования глобальных переменных в рамках одного запроса.
Пример. Отслеживание одного запроса через множество уровней кода становится невозможным без этого,если вы не выставите свой запрос (или req ID) слоям, он просто не принадлежит.(т. е. Service, DAL и т. д. храните ваш запрос в вашем контроллере, где бы он ни находился).
По сути, передача переменных через многие уровни просто так, чтобы они были доступны на нижних уровнях моего приложения, является неустойчивой иделает код очень грязным.
Прежде чем вы начнете кричать, да, я знаю, что Домены были объявлены устаревшими, начиная с Узла 5, и я также знаю, что это не тот случай использования Доменов, как это задокументировано.Но сейчас Node завершает работу над новым API, который, будем надеяться, продолжит решать эту проблему.
https://nodejs.org/api/domain.html