¿Cómo cambiar el valor de process.env.PORT en node.js?

Respuestas:

281

Para una sola ejecución (desde el indicador de shell de Unix):

$ PORT=1234 node app.js

Más permanentemente:

$ export PORT=1234
$ node app.js

En Windows :

set PORT=1234

En Windows PowerShell :

$env:PORT = 1234
JohnnyHK
fuente
44
Por el bien de la documentación, msdn.microsoft.com/en-us/library/windows/desktop/… para usuarios de Windows
WraithKenny
3
También para Powershell, es $env:PORT = 80 technet.microsoft.com/en-us/library/ff730964.aspx
WraithKenny
VAR_1=value VAR_2=11827 node-> simplemente use un espacio para usar más de una variable en el mismo comando
p4bloch
15

Puede usar la solución multiplataforma https://www.npmjs.com/package/cross-env

$ cross-env PORT=1234
v2p
fuente
Esta es probablemente la mejor solución. Hay demasiado margen de error con los diferentes terminales. Pasé como 40 minutos hasta que encontré cross-envresúmenes de este problema y simplemente funciona.
adi518
8

use el siguiente comando para establecer el número de puerto en el proceso del nodo mientras ejecuta el programa JS del nodo:

set PORT =3000 && node file_name.js

Se puede acceder al puerto establecido en el código como

process.env.PORT 
Vikash Kumar
fuente
2

EDITAR: Según el comentario de @ sshow, si está intentando ejecutar su aplicación de nodo en el puerto 80, la siguiente no es la mejor manera de hacerlo. Aquí hay una mejor respuesta: ¿Cómo ejecuto Node.js en el puerto 80?

Respuesta original

Si desea hacer esto para ejecutarse en el puerto 80 (o desea establecer la variable env de forma más permanente ),

  1. Abre tu perfil de bash vim ~/.bash_profile
  2. Agregue la variable de entorno al archivo export PORT=80
  3. Abre el archivo de configuración de sudoers sudo visudo
  4. Agregue la siguiente línea al archivo exactamente así Defaults env_keep +="PORT"

Ahora, cuando lo ejecutes sudo node app.js, debería funcionar como desees.

Kyle Chadha
fuente
No se recomienda ejecutar sus scripts de nodo como root (sudo). Use sudo iptables -t nat -I PREROUTING -p tcp --dport 80 -j REDIRECT --to-port 8080y escuche en el puerto 8080 en su lugar. stigok.tumblr.com/post/139320914543/…
sshow
1
Sí, tiene razón, me he vinculado a una mejor discusión (que también respondí, descargo de responsabilidad ) y aprendí después de usar inicialmente este enfoque.
Kyle Chadha