Kann meine Umgebungsvariable in meiner Nodejs App nicht lesen

9

Ich bin auf Ubuntu 12.04 und ich lerne gerade über Umgebungsvariablen. Ich versuche, eine benutzerdefinierte Variable aus meiner Anwendung zu lesen, aber sie wird immer als undefined angezeigt. Hier ist der Code meiner Test App:

%Vor%

Wenn ich die folgenden Befehle ausführe, sehen Sie, dass die Variable einen Wert hat:

%Vor%

Ich kann echo $NODE_ENV den ganzen Tag und es wird weiterhin "Produktion" anzeigen, aber wenn ich process.env.NODE_ENV in meiner Knoten-Anwendung mache, wird immer "undefiniert" angezeigt.

%Vor%

Hier ist der seltsame Teil, wenn ich eine andere Umgebungsvariable zeige, die ich bereits kenne, sagen wir process.env.PATH , dann funktioniert es.

%Vor%

Eine weitere Besonderheit ist, dass der Befehl printenv list nicht meine benutzerdefinierte Variable NODE_ENV enthält, obwohl echo $NODE_ENV mir den richtigen Wert anzeigt. printenv NODE_ENV zeigt auch nichts, aber printenv PATH zeigt den richtigen Wert, so wie ich es getan habe, als ich in meiner Knotenanwendung auf PATH zugegriffen habe.

    
Chev 29.05.2012, 17:08
quelle

3 Antworten

21

Sie müssen export Shell-Variablen verwenden, um sie für Prozesse verfügbar zu machen, die Sie in Ihrer Shell ausführen.

Vergleichen Sie die Ausgabe dieses Befehls:

%Vor%

mit der Ausgabe von diesem:

%Vor%     
lanzz 29.05.2012, 17:12
quelle
6

Ich habe meinen Weg von etwas wirklich albern gefunden.

Ich hatte gerade die neuen exportierten Variablen hinzugefügt, aber mein Knotenprozess sah sie immer noch nicht. Dann erkannte ich, dass es nicht genug war, den Knotenprozess neu zu starten - ich musste auch ein neues Terminal (dh eine Bash-Instanz) öffnen. Sobald ich das getan habe, hat es gut funktioniert:)

    
MalcolmOcean 10.05.2014 12:26
quelle
0

Sie sollten in Erwägung ziehen, eine Bibliothek zum Verwalten der App-Konfiguration zu verwenden.

Zum Beispiel hilft nconf , die Konfiguration über

zu verwalten
  • Befehlszeilenargumente
  • Umgebungsvariablen
  • Dateien
  • usw. ..

Wenn Sie sich die Quelle ansehen, können Sie Ссылка

lernen     
250R 30.05.2012 00:08
quelle