Ich wollte nur wissen, ob es eine Möglichkeit gibt, einfach Umgebungsvariablen lesen, die ich gesetzt habe mit SET in cmd. Ich habe gelesen über process.env. [ENVVAR], aber wenn ich console.log die Variable, die ich in cmd gesetzt habe, zeigt es undefined. Auf anderen Threads habe ich gelesen, dass es gar nicht möglich ist, auf Windows env zuzugreifen. Variablen. Also was ist eigentlich richtig?NodeJS - Get Umgebungsvariablen mit cmd gesetzt
Antwort
Ich werde meine Kommentare in eine Antwort zusammenfassen.
Wenn Sie node.js aus einem cmd-Fenster starten, wird eine Kopie der aktuellen Benutzerumgebung nur für diesen node.js-Prozess erstellt. Auf diese Umgebung kann über process.env
zugegriffen werden.
Diese Umgebung wird von keinem externen Agenten geändert. Sobald der Prozess node.js gestartet wurde, gehört seine Umgebung eindeutig zum Prozess node.js.
Durch Änderungen an der Windows-Standardumgebung über Windows Control Panel > System > Advanced System Settings > Advanced > Environment Variables
wird beeinflusst, welche Variablen/Werte in neu erstellten Umgebungen festgelegt werden (z. B. neu erstellte cmd-Fenster). Es hat keine Auswirkungen auf derzeit geöffnete oder laufende Umgebungen.
Mit process.env
können Sie alle vorhandenen Umgebungsvariablen in Ihrer eigenen Umgebung lesen. Sie können das Objekt process.env
direkt ändern (Ändern von Werten, Entfernen von Eigenschaften usw.), und diese Änderungen werden von jedem anderen Code in Ihrem Prozess angezeigt, der auf process.env
zugreift. Änderungen an einer Umgebung in einem anderen Cmd-Fenster wirken sich jedoch nicht auf die Umgebung in einem laufenden node.js-Programm aus.
Sie versuchen, Zugriff auf Umgebungsvariablen zu erhalten, die in der Windows-Cmd-Umgebung festgelegt wurden, BEVOR Sie node.js in diesem bestimmten Cmd-Shell-Fenster ausgeführt haben? Oder Umgebungsvariablen, die mit cmd innerhalb von node.js gesetzt wurden? Bitte erweitern Sie, was genau Sie vorhaben. Denken Sie daran, dass es viele verschiedene Umgebungen gibt. Wir müssen wissen, über welche Sie sprechen und welche die gewünschte Variable ist. – jfriend00
Ich habe SET ENVNAME = VALUE in Windows cmd verwendet (und ich habe eine Systemumgebungsvariable in Windows gesetzt). Es enthält einen Pfad zu meiner Datenbank und möchte es jetzt in meiner Anwendung (Typoskript) lesen. Ich weiß sehr wenig darüber, also bin ich mir nicht sicher, ob das deine Fragen beantwortet. – Faigjaz
Jedes cmd-Fenster ist eine separate Umgebung. Wenn Sie also eine Umgebungsvariable auf eins setzen, wirkt sich dies nicht auf ein anderes cmd-Fenster aus. Sie können jedoch eine Umgebungsvariable in einem cmd-Fenster setzen und DANN starten Sie in diesem Fenster Ihre node.js-Anwendung, die dann diese Umgebungsvariable lesen kann. – jfriend00