¿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?
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).
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"
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!
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:
-
En la línea de comandos:
set NODE_ENV=production&&npm start
O
set NODE_ENV=production&&node index.js
-
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"&&".
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.
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:
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.
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.
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.)
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.
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.
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.
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.
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
:
- Instalar con
npm install --save dotenv-safe
. - Inclúyalo en su código (mejor al comienzo del
index.js
) y utilícelo directamente con elprocess.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
.
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.
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
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
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"
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