2013-01-31 12 views
35

Il comando corro sul mio server per iniziare il mio nodo app è:Node.js per sempre con variabile di ambiente

sudo IS_PROD=1 node app.js 

ho sempre installato, ma non riesco a passare nella variabile d'ambiente.

sudo IS_PROD=1 forever node app.js 

Non sembra fare il trucco. Ho provato diverse varietà di questo. Come posso eseguire correttamente questo comando o impostare in modo permanente la variabile di ambiente?

risposta

77

Prima di tutto è necessario saltare la cosa node in comando, non dovrebbe essere lì, non si dovrebbe essere in grado di eseguirlo. avvia automaticamente lo script utilizzando . Invece dovresti fare così;

sudo IS_PROD=1 forever app.js 

Probabilmente, invece di partire il server in primo piano, vorranno avviare il server come un demone. per esempio.

sudo IS_PROD=1 forever start app.js 

Questo creerà un processo in background che guarderà l'app del nodo e lo riavvierà quando uscirà. Per ulteriori informazioni, consultare lo readme.

Entrambi questi metodi preservano le variabili di ambiente, proprio come quando si utilizza solo node.

+6

Il downmoter può spiegare perché? – Mattias

+1

Ho una piccola domanda, dato che presumo che questo env var sia conservato su ogni server riavviato da sempre, posso in qualche modo passare una variabile diversa per il caso del riavvio, non del primo avvio. Voglio solo fare alcune filewritings al primo avvio (Uglifying) e che non ripeterlo al riavvio. –

+0

Vero. Era il mio problema Semplicemente non ho inserito 'start'. * ERRATO *: 'NODE_ENV =" produzione "per sempre bin/www'. * CORRETTO *: 'NODE_ENV =" produzione "inizia sempre bin/www' – Green

12

app.js:

console.log(process.env.IS_PROD); 

Uso node (v0.8.21)

$ node app.js 
undefined 

$ IS_PROD=1 node app.js 
1 

$ sudo IS_PROD=1 node app.js 
1 

Uso 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

Un oggetto contenente l'ambiente utente. Vedi environ (7).

Problemi correlati