visual variable studio node_env node node.js express

node.js - variable - set node_env npm



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

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?


Acabo de encontrar un buen paquete Node.js que puede ayudar mucho a definir variables de entorno utilizando una sintaxis ú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! ¡Ya no hay comandos específicos de Windows o Unix!


Aquí está el método de la línea que no es de comando:

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

O bien, navegue hasta 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 Propiedades del sistema con la pestaña Avanzado seleccionada. En la parte inferior, verá un botón Variables de entorno ... Haga clic en este

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

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

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

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


En PowerShell:

$env:NODE_ENV="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"


Escribí un módulo win-node-env con el que puedes ejecutar tu comando como lo harías en * nix.

# .env.example, committed to repo DB_HOST=localhost DB_USER=root DB_PASS=s1mpl3

Funciona creando un NODE_ENV.cmd que establece la variable de entorno NODE_ENV y genera un proceso secundario con el resto del comando y sus argumentos.

Simplemente instálelo (globalmente) y ejecute los comandos de script npm, esto debería hacer que funcionen automáticamente.

# .env, private, .gitignore it DB_HOST=real-hostname.example.com DB_USER=real-user-name DB_PASS=REAL_PASSWORD


Las versiones actuales de Windows usan Powershell como shell predeterminado, así que usa:

$env:NODE_ENV="production"

Per @ jsalonen responde abajo. Si está en CMD (que ya no se mantiene), use

set NODE_ENV=production

Esto debe ejecutarse 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 configurar las variables de entorno de manera global para que se mantengan más allá del simple símbolo del sistema, puede encontrar la herramienta en Sistema en el Panel de control (o escribiendo "entorno" en el cuadro de búsqueda en el menú de inicio).


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

setx NODE_ENV development

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

La sintaxis establecida solo dura la duración de la ventana cmd en la que se establece.

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 múltiples variables de entorno, un archivo .env es más conveniente:

require(''dotenv'').load() console.log(process.env.DB_HOST)

$env:NODE_ENV="production"

Es fácil de usar con dotenv-safe :

  1. Instale con npm install --save dotenv-safe .
  2. Inclúyalo en su código (lo mejor al inicio de index.js ) y utilícelo directamente con el comando process.env :

node fileName.js

No olvide ignorar el archivo .env en su VCS .

Luego, su programa falla rápidamente si una variable "definida" en .env.example se establece como una variable de entorno o en .env .


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 eso se puede arreglar. (Ampliando la respuesta de @Jsalonen.)


Puedes usar

npm run env NODE_ENV=production

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

De la documentación del script de ejecución de npm :

El script env es un comando incorporado especial que se puede usar para enumerar las 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.


Sería ideal si pudiera establecer parámetros en la misma línea que su llamada para iniciar Node.js en Windows. Mire lo siguiente con cuidado 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 comando con su archivo package.json configurado como se muestra a continuación

    //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 necesita eliminar los espacios en blanco antes y después de "&&".


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

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

<PropertyGroup Condition=" ''$(Configuration)'' == ''Debug'' "> <DebugSymbols>true</DebugSymbols> <Environment>NODE_ENV=development</Environment> </PropertyGroup> <PropertyGroup Condition=" ''$(Configuration)'' == ''Release'' "> <DebugSymbols>true</DebugSymbols> <Environment>NODE_ENV=production</Environment> </PropertyGroup>

El menú desplegable ''Debug / Release'' controlará cómo se establece la variable antes de iniciar Node.js.


Solo para aclarar, y para cualquier otra persona que pueda estar arrancando su cabello ...

Si está utilizando git bash en Windows , set node_env=production&& node whatever.js no funciona . En su lugar, utilice el cmd nativo. Luego, utilizando set node_env=production&& node whatever.js funciona como se esperaba.

Mi caso de uso:

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


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


primero en el tipo de PowerShell

NODE_ENV=production node myapp/app.js

entonces escribe

npm install -g win-node-env

Funcionará perfectamente mostrando todas las salidas.