¿Cómo puedo configurar NODE_ENV = producción en Windows?

En Ubuntu es bastante simple; Puedo ejecutar la aplicación usando:

$ NODE_ENV=production node myapp/app.js 

Sin embargo, esto no funciona en Windows. ¿Hay un archivo de configuración donde puedo establecer el atributo?

Tratar de usar

 set NODE_ENV=production 

Esto se debe ejecutar en el símbolo del sistema donde tiene la intención de ejecutar su aplicación Node.js.

La línea anterior establecería la variable de entorno NODE_ENV para el símbolo del sistema donde ejecuta el comando.

Para establecer globalmente las variables de entorno para que persistan más allá del solo símbolo del sistema, puede encontrar la herramienta desde Sistema en el Panel de control (o escribiendo ‘entorno’ en el cuadro de búsqueda en el menú de inicio).

En PowerShell:

 $env:NODE_ENV="production" 

Acabo de encontrar un buen paquete Node.js que puede ayudar mucho a definir variables de entorno usando una syntax única, multiplataforma.

https://www.npmjs.com/package/cross-env

Te permite escribir algo como esto:

 cross-env NODE_ENV=production my-command 

¡Lo cual es bastante conveniente! Sin comandos específicos de Windows o Unix más!

Sería ideal si pudiera establecer parámetros en la misma línea que su llamada para iniciar Node.js en Windows. Observe cuidadosamente lo siguiente y ejecútelo exactamente como se indica:

Tienes estas dos opciones:

  1. En la línea de comando:

     set NODE_ENV=production&&npm start 

    o

     set NODE_ENV=production&&node index.js 
  2. Ejecute “npm run start_windows” en la línea de comandos con su archivo package.json configurado de la siguiente manera

     //package.json "scripts": { "start": "node index.js" "start_windows": "set NODE_ENV=production&&node index.js" } 

El truco para que funcione en Windows es que debe eliminar los espacios en blanco antes y después de “&&”.

Puedes usar

 npm run env NODE_ENV=production 

Probablemente sea la mejor manera de hacerlo, ya que es compatible tanto con Windows como con Unix.

De la documentación npm run-script :

El script env es un comando especial incorporado que se puede usar para enumerar variables de entorno que estarán disponibles para el script en tiempo de ejecución. Si se define un comando “env” en su paquete, tendrá prioridad sobre el incorporado.

Si está utilizando Visual Studio con NTVS, puede establecer las variables de entorno en la página de propiedades del proyecto:

Propiedades del proyecto Visual Studio NTVS

Como puede ver, los menús desplegables Configuración y Plataforma están deshabilitados (no he .njsproj demasiado por qué esto es así), pero si edita su archivo .njsproj la siguiente manera:

   true NODE_ENV=development   true NODE_ENV=production  

El menú desplegable ‘Depurar / Liberar’ controlará cómo se establece la variable antes de iniciar Node.js.

Mi experiencia con Node.js en Windows 7 de 64 bits en Visual Studio 2013 es que debes usar

 setx NODE_ENV development 

desde una ventana de cmd Y debe reiniciar Visual Studio para que se reconozca el nuevo valor.

La syntax establecida solo dura la duración de la ventana de cmd en la que está configurada.

Prueba simple en Node.js:

 console.log('process.env.NODE_ENV = ' + process.env.NODE_ENV); 

Devuelve ‘indefinido’ cuando usa set, y devolverá ‘desarrollo’ si usa setx y reinicia Visual Studio.

Para ejecutar su aplicación en PowerShell (ya que && no está permitido):

 ($env:NODE_ENV="production") -and (node myapp/app.js) 

Tenga en cuenta que la salida de texto de lo que está haciendo el servidor está suprimida, y no estoy seguro de si es corregible. (Ampliando la respuesta de @ jsalonen).

Solo para aclarar, y para cualquier otra persona que pueda estar tirando de sus cabellos …

Si está utilizando git bash en Windows , set node_env=production&& node whatever.js no parece funcionar . En cambio, usa el cmd nativo. Luego, usando set node_env=production&& node whatever.js funciona como se espera.

Mi caso de uso:

Desarrollé en Windows porque mi flujo de trabajo es mucho más rápido, pero necesitaba asegurarme de que el middleware específico de desarrollo de mi aplicación no se activara en el entorno de producción.

Aquí está el método de línea sin comando:

En Windows 7 o 10, escriba environment en el cuadro de búsqueda del menú de inicio y seleccione Editar las variables de entorno del sistema.

Alternativamente, vaya a Panel de control \ Sistema y seguridad \ Sistema y haga clic en Configuración avanzada del sistema

Esto debería abrir el cuadro de diálogo de propiedades del sistema con la pestaña Avanzado seleccionada. En la parte inferior, verá un botón Variables de entorno … Haga clic en esto

Cuadro de diálogo del sistema

Se abrirá el cuadro de diálogo Variables de entorno.

Cuadro de diálogo Variable de entorno

En la parte inferior, en Variables del sistema, seleccione Nuevo … Esto abrirá el cuadro de diálogo Nueva variable del sistema.

enter image description here

Ingrese el nombre y el valor de la variable, y haga clic en Aceptar.

Deberá cerrar todas las solicitudes de cmd y reiniciar su servidor para que la nueva variable esté disponible para procesar.env. Si aún no aparece, reinicie su máquina.

Para variables de entorno múltiples , un archivo .env es más conveniente:

 # .env.example, committed to repo DB_HOST=localhost DB_USER=root DB_PASS=s1mpl3 
 # .env, private, .gitignore it DB_HOST=real-hostname.example.com DB_USER=real-user-name DB_PASS=REAL_PASSWORD 

Es fácil de usar con dotenv-safe :

  1. Instalar con npm install --save dotenv-safe .
  2. Inclúyalo en su código (mejor al comienzo de index.js ) y utilícelo directamente con el comando process.env :
 require('dotenv').load() console.log(process.env.DB_HOST) 

No olvides ignorar el archivo .env en tu VCS .

Entonces, su progtwig falla rápidamente si una variable “definida” en .env.example está configurada como variable de entorno o en .env .

esto no establecerá una variable, pero es útil en muchos casos. No recomendaré usar esto para producción, pero debería estar bien si estás jugando con npm.

 npm install --production 

En caso de que esté utilizando el terminal GITBASH "set NODE_ENV=production" no funcionará, lo que puede hacer es escribir “export NODE_ENV=production"

primero en tipo powershell

 $env:NODE_ENV="production" 

luego escribe

 node fileName.js 

Funcionará perfectamente mostrando todas las salidas.