Der Knoten ist global innerhalb von Modulen

Im Knoten sehe ich, dass Variablen, die global innerhalb von Modulen initialisiert wurden, über mehrere Anforderungen hinweg verwechselt werden. Zum Beispiel:

a.js

var a;
function printName(req, res) {
  //get param `name` from url;
  a = name;
  res.end('Hi '+a);
}
module.exports.printName = printName;

index.js

//Assume all createServer stuffs are done and following function as a CB to createServer
function requestListener(req, res) {
  var a = require('a');
  a.printName(req, res);
}

Gemäß meiner Annahme wird die aus dem Modul 'a' exportierte Funktion printName jedes Mal ausgeführt, wenn eine neue Anforderung den Knoten trifft, und sie hat jedes Mal ein anderes Bereichsobjekt.

Ein globales Element in einem Modul würde sich also nicht auf alle Anforderungen auswirken.

Aber ich sehe, dass das nicht der Fall ist. Kann irgendjemand erklären, wie Knoten Modulexporte von Funktionen in spezifischer Weise handhaben [wie es den Umfang des zwischengespeicherten Modulexportobjekts handhabt] und wie diese gemeinsamen globalen Variablen über Anforderungen innerhalb eines Moduls hinweg überwunden werden können?

Bearbeiten [Wir führen eine asynchrone Aufgabe pro Anfrage aus]: Mit schnellen Anfragen in unserem Live-System. Welche Abfrage im Grunde redis und beantwortet die Anfrage. Wir sehen eine falsche Antwort auf eine falsche Anfrage (Antwort [in einer globalen Variable im Modul gespeichert] eines Redis-Look-Ups, die falsch auf Diff Req abgebildet ist). Außerdem haben wir einige Standardwerte als globale Variablen, die basierend auf Anforderungsparametern überschrieben werden können. Was auch immer vermasselt wird

Antworten auf die Frage(3)

Ihre Antwort auf die Frage