2016-04-15 9 views
1

In Nodejs, die ein Nodejs-Skript als Einstiegspunkt in einem Docker-Container ausführen, habe ich process.env._ undefined gefunden und mein Code hat eine Ausnahme ausgelöst. Wenn Sie bash als Einstiegspunkt verwenden und dasselbe Programm ausführen, wird das Feld definiert.Warum ist process.env._ in einigen Versionen von nodejs nicht definiert?

Dies war auf Knoten v4.3.2. Es funktionierte gut auf Knoten 0.10.x als Einstiegspunkt.

Das Betriebssystem für beide Fälle ist Ubuntu Wily.

Ist dieses Feld nicht garantiert definiert? Ich konnte dazu keine Spezifikation finden.

Die echte Frage: Muss ich den gesamten Code schützen, der process.env Felder verwendet?

+0

ich hatte das gleiche Problem. Wenn Sie nach dem ausführbaren Pfad des Knotens suchen, sieht es innerhalb des Knotenprozesses so aus, als würde 'process.execPath' es tun. https://nodejs.org/api/process.html#process_process_execpath –

Antwort

0

process.env._ verweist die Umgebungsvariable namens _

Wenn die Umgebungsvariable nicht gesetzt ist, dann wird es nicht definiert werden.

Wenn Sie sicherstellen können, dass die Umgebungsvariable gesetzt ist, ist kein Schutz erforderlich.

Wenn Sie nicht garantieren, kann es Ihnen gesetzt ist, dann eine Standard bieten könnte ...

var myvar = process.env._ || "defaultValue"; 
+0

Ich hätte hinzufügen sollen, dass 'process.env._' der vollqualifizierte Pfadname des betreffenden Prozesses ist. Grundsätzlich gibt es unter bestimmten Umständen keine Möglichkeit herauszufinden, wie der Prozessname lautet .... –

Verwandte Themen