2013-01-31 5 views
35

Der Befehl, den ich auf meinem Server laufen meine Knoten App zu starten ist:Node.js für immer mit Umgebungsvariable

sudo IS_PROD=1 node app.js 

Ich habe immer installiert, kann aber nicht in der Umgebungsvariablen zu passieren scheint.

sudo IS_PROD=1 forever node app.js 

Scheint nicht den Trick zu tun. Ich habe verschiedene Varianten davon ausprobiert. Wie führe ich diesen Befehl entweder erfolgreich aus oder setze die Umgebungsvariable dauerhaft?

Antwort

77

Zuerst sollten Sie die node Sache in Ihrem Befehl überspringen, es sollte nicht da sein, Sie sollten nicht in der Lage sein, das auszuführen. startet automatisch Ihr Skript mit . Stattdessen solltest du so machen;

Wahrscheinlich möchten Sie, anstatt Ihren Server im Vordergrund zu starten, Ihren Server als Daemon starten. z.B.

Dadurch wird im Hintergrund ein Prozess erstellt, der Ihre Knoten-App überwacht und beim Beenden neu startet. Weitere Informationen finden Sie unter readme.

Beide Methoden erhalten die Umgebungsvariablen, genau wie wenn Sie nur node verwenden.

+6

Kann der Downvoter erklären warum? – Mattias

+1

Ich habe eine kleine Frage, wie ich nehme an, dass diese env var auf jedem Server Neustart für immer beibehalten wird, kann ich irgendwie eine andere Variable für den Fall des Neustarts übergeben, nicht zuerst starten. Ich möchte nur einige Dateien beim ersten Start (Uglifying) machen und dann beim Neustart nicht wiederholen. –

+0

Wahr. Es war mein Problem. Ich habe einfach nicht "Start" eingegeben. * FALSCH *: 'NODE_ENV =" Produktion "für immer bin/www'. * Korrekt *: 'NODE_ENV =" Produktion "für immer Start bin/www' – Green

12

app.js:

console.log(process.env.IS_PROD); 

Mit node (v0.8.21)

$ node app.js 
undefined 

$ IS_PROD=1 node app.js 
1 

$ sudo IS_PROD=1 node app.js 
1 

Mit forever (v0.10.0)

$ forever app.js 
undefined 

$ IS_PROD=1 forever app.js 
1 

$ sudo IS_PROD=1 forever app.js 
1 

Documentation:

process.env

ein Objekt der Benutzerumgebung enthält. Siehe Umgebung (7).