Come modificare il valore di process.env.PORT in node.js?


Risposte:


281

Per una sola corsa (dal prompt della shell unix):

$ PORT=1234 node app.js

Più permanentemente:

$ export PORT=1234
$ node app.js

In Windows :

set PORT=1234

In Windows PowerShell :

$env:PORT = 1234

4
Per ragioni di documentazione, msdn.microsoft.com/en-us/library/windows/desktop/… per utenti Windows
WraithKenny

3
Anche per Powershell, è $env:PORT = 80 technet.microsoft.com/en-us/library/ff730964.aspx
WraithKenny

VAR_1=value VAR_2=11827 node-> usa semplicemente uno spazio per usare più di una variabile con lo stesso comando
p4bloch,

15

Puoi utilizzare la soluzione multipiattaforma https://www.npmjs.com/package/cross-env

$ cross-env PORT=1234

Questa è probabilmente la soluzione migliore. C'è troppo margine di errore per i diversi terminali. Ho trascorso circa 40 minuti fino a quando ho scoperto che cross-envquesto problema è stato risolto e funziona.
adi518,

8

utilizzare il comando seguente per impostare il numero di porta nel processo del nodo durante l'esecuzione del programma JS del nodo:

set PORT =3000 && node file_name.js

È possibile accedere alla porta impostata nel codice come

process.env.PORT 

2

EDIT: Per il commento di @sshow, se stai cercando di eseguire l'app del nodo sulla porta 80, il seguente non è il modo migliore per farlo. Ecco una risposta migliore: come posso eseguire Node.js sulla porta 80?

Risposta originale:

Se vuoi farlo per funzionare sulla porta 80 (o vuoi impostare la variabile env in modo più permanente ),

  1. Apri il tuo profilo bash vim ~/.bash_profile
  2. Aggiungi la variabile d'ambiente al file export PORT=80
  3. Apri il file di configurazione sudoers sudo visudo
  4. Aggiungi la seguente riga al file esattamente così Defaults env_keep +="PORT"

Ora quando lo esegui sudo node app.jsdovrebbe funzionare come desiderato.


Non è consigliabile eseguire gli script del nodo come root (sudo). Utilizzare sudo iptables -t nat -I PREROUTING -p tcp --dport 80 -j REDIRECT --to-port 8080e ascoltare invece sulla porta 8080. stigok.tumblr.com/post/139320914543/…
sshow

1
Sì, hai ragione, mi sono collegato a una discussione migliore (a cui ho anche risposto, disclaimer ) e appreso dopo aver inizialmente utilizzato questo approccio.
Kyle Chadha,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.