Para uso en entornos express.js. ¿Alguna sugerencia?
javascript
node.js
macos
environment-variables
Mark Gia Bao Nguyen
fuente
fuente
Respuestas:
Antes de ejecutar su aplicación, puede hacerlo en la consola,
O si estás en Windows, puedes probar esto:
o puedes ejecutar tu aplicación así:
También puede configurarlo en su archivo js:
Pero no sugiero hacerlo en su archivo de tiempo de ejecución, ya que no es fácil abrir VIM en su servidor y cambiarlo a producción. Puede crear un archivo config.json en su directorio y cada vez que se ejecuta su aplicación, se lee y establece la configuración.
fuente
process.env.NODE_ENV
manera confiable desde la propia aplicación. Mejor configure su variable de entorno correctamente como Daniel enlazó a continuación.NODE_ENV
explícitamente cada vez que ejecuta la aplicación, como en el segundo ejemplo (NODE_ENV=production node app.js
). De esa manera, potencialmente se salvará de algunos tirones futuros en el caso de que olvideNODE_ENV
volver a configurar su localdevelopment
.cross-env NODE_ENV=production
Funciona en Windows y Linux / Mac.NODE_ENV=production forever app.js
debería funcionar.en package.json:
luego ejecutar en la terminal:
fuente
NODE_ENV=production
en package.json no tiene mucho sentido. Ejecutarnpm start
en desarrollo lo ejecutará en producción. Puede escribir su código como si siempre fuera producción, ya que siempre lo ejecuta de esa manera. La razón por la que veo para hacer esto sería forzar a otros módulos (por ejemplo, Express) a ejecutarse en modo de producción. ¿Por qué usar variables de entorno si nunca cambian?¿Nadie mencionado
.env
aquí todavía? Haga un.env
archivo en la raíz de su aplicaciónrequire('dotenv').config()
y luego lea los valores. Fácilmente cambiado, fácil de leer, multiplataforma.https://www.npmjs.com/package/dotenv
fuente
"mode": "production"
en el.env
archivo funcionó.export NODE_ENV=production
Es una mala solución, desaparece después de reiniciar.si no quiere preocuparse más por esa variable, agréguela a este archivo:
no use la sintaxis de exportación, solo escriba (en una nueva línea si ya hay contenido):
Funciona después de reiniciar. Ya no tendrá que volver a ingresar el comando export NODE_ENV = production en ningún lugar y simplemente usar el nodo con cualquier cosa que desee, para siempre, pm2 ...
Para heroku:
que en realidad es por defecto
fuente
NODE_ENV=production gulp bundle-production-app
para agrupar secuencias de comandos listas para producción, en el servidor NODE_ENV está en el entorno del servidor y en la máquina de desarrollo no está allí. En algunas máquinas es una pesadilla si no está configurado y espera tenerlo configurado siempre . En algunos, espera no tenerlo, por lo que no agrega. De todos modos, al hacer las IU, dejo en claro si está en modo de desarrollo para que nunca tenga una pregunta si está activado o desactivado. Si NODE_ENV es! == producción, es evidente que estás en otro modo, así que no hay pesadilla en absoluto. Todo claro, todo bien./etc/environment
y ejecutarloexport NODE_ENV=production
?Para no tener que preocuparse si está ejecutando sus scripts en Windows, Mac o Linux, instale el paquete cross-env . Entonces puedes usar tus scripts fácilmente, así:
Apoyos masivos para los desarrolladores de este paquete.
fuente
fuente
NODE_ENV=production
ahora es el valor predeterminado en implementaciones de Heroku node.js.Para Windows Powershell, use este comando
fuente
En OSX, recomendaría agregar
export NODE_ENV=development
a su~/.bash_profile
y / o~/.bashrc
y / o~/.profile
.Personalmente agrego esa entrada a mi
~/.bashrc
y luego hago que~/.bash_profile
~/.profile
importe el contenido de ese archivo, para que sea coherente en todos los entornos.Después de hacer estas adiciones, asegúrese de reiniciar su terminal para recoger la configuración.
fuente
Si estás en windows. Abra su cmd en la carpeta correcta y luego primero
pulsa enter, entonces puedes comenzar tu nodo con
comenzará con su configuración de env
fuente
Si usa webpack en su aplicación, simplemente puede configurarlo allí, usando
DefinePlugin
...Entonces, en su
plugin
sección, configure el NODE_ENV enproduction
:fuente
Para tener múltiples entornos, necesita todas las respuestas antes (parámetro NODE_ENV y exportarlo), pero utilizo un enfoque muy simple sin la necesidad de instalar nada. En su package.json solo ponga un script para cada env que necesite, de esta manera:
Luego, para iniciar la aplicación en lugar de usar el
npm start
usonpm run script-prod
.En el código puede acceder al entorno actual con
process.env.NODE_ENV
.Voila
fuente
Windows CMD ->
set NODE_ENV=production
Windows Powershell ->
$env:NODE_ENV="production"
MAC ->
export NODE_ENV=production
fuente
Daniel tiene una respuesta fantástica, que es el mejor enfoque para el proceso correcto de implementación (configurar y olvidar).
Para aquellos que usan express. Puedes usar grunt-express-server, que también es fantástico. https://www.npmjs.org/package/grunt-express-server
fuente
Puede ser una posibilidad que haya realizado dos instancias de secuenciar objetos
por ejemplo: var con1 = new Sequelize (); var con2 = new Sequelize ();
que también ocurrirá el mismo error
fuente