¿Cómo puedo configurar NODE ENV = production 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 pueda establecer el atributo?

Author: Peter Mortensen, 2012-02-12

15 answers

Intenta usar

set NODE_ENV=production

Esto debe ejecutarse en el símbolo del sistema donde pretende ejecutar su nodo.aplicación js.

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

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

 348
Author: Jani Hartikainen,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-07-16 10:09:14

En PowerShell:

$env:NODE_ENV="production"
 152
Author: jsalonen,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2016-05-02 05:45:09

Acabo de encontrar un buen nodo.paquete 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

Que es bastante conveniente! ¡Ya no hay comandos específicos de Windows o Unix!

 137
Author: MoOx,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-07-16 11:58:42

Sería ideal si pudiera establecer parámetros en la misma línea que su llamada al nodo de inicio.js en Windows. Mira lo siguiente cuidadosamente, y ejecútalo exactamente como se indica:

Tienes estas dos opciones:

  1. En la línea de comandos:

    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 paquete.archivo json configurado como abajo

    //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 el espacio en blanco antes y después del"&&".

 63
Author: Alexander Mills,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-07-16 11:48:59

Puede usar

npm run env NODE_ENV=production

Es probablemente la mejor manera de hacerlo, porque es compatible tanto en Windows como en Unix.

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

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

 25
Author: Brieuc P,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-07-16 11:51:49

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

Propiedades del proyecto de Visual Studio NTVS

Como puede ver, los desplegables de Configuración y Plataforma están deshabilitados (no he mirado demasiado lejos en por qué es esto), pero si edita su archivo .njsproj de 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 el nodo.js.

 13
Author: paul,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-07-16 11:56:46

Mi experiencia usando 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 set solo dura la duración de la ventana cmd en la que se establece.

Prueba simple en el nodo.js:

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

Devuelve 'undefined' cuando se usa set, y devolverá 'development' si se usa setx y se reinicia Visual Studio.

 8
Author: edhubbell,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-07-16 10:28:32

Para ejecutar la 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 es solucionable. (Ampliando la respuesta de @jsalonen.)

 4
Author: Cameron Yick,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-07-16 11:50:01

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

Si usted está usando git bash en Windows, set node_env=production&& node whatever.js no parece funcionar. En su lugar, utilice el cmd nativo. Entonces, usando set node_env=production&& node whatever.js funciona como se espera.

Mi caso de uso:

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 ejecutara en el entorno de producción.

 4
Author: pstrawberriedev,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-07-16 11:59:40

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

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

Como alternativa, 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 Propiedades del sistema con la pestaña Avanzado seleccionada. En la parte inferior, verá una Variables de entorno... botón. Clic este.

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.

introduzca la descripción de la imagen aquí

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

Tendrá que cerrar todas las solicitudes de cmd y reiniciar el servidor para que la nueva variable esté disponible para procesar.env. Si todavía no aparece, reinicie tu máquina.

 4
Author: Mattatat-tat,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2018-04-03 03:16:33

Para múltiples variables de entorno, 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 del index.js) y utilícelo directamente con el process.env comando :
require('dotenv').load()
console.log(process.env.DB_HOST)   

No te olvides de ignore el archivo .env en su VCS.

Su programa falla rápidamente si una variable "definida" en .env.example no está configurado como variable de entorno o en .env.

 2
Author: Dominik,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2018-03-27 13:23:54

Primero en powershell escriba

$env:NODE_ENV="production"

Luego escriba

node fileName.js

Funcionará perfectamente mostrando todas las salidas.

 1
Author: Abhinav,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2018-08-24 05:34:53

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

NODE_ENV=production node myapp/app.js

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

Simplemente instálelo (globalmente), y ejecute sus comandos de script npm, debería hacerlos funcionar automáticamente.

npm install -g win-node-env
 1
Author: laggingreflex,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2018-09-12 04:28:27

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

npm install --production
 0
Author: Bar Horing,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2018-05-09 11:35:51

En caso de que esté utilizando GITBASH terminal "set NODE_ENV=production" no funcionará, lo que puedes hacer es escribir "exportar NODE_ENV=production"

 0
Author: Bozhinovski Vladimir,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2018-08-15 15:32:32