¿Qué es NODE_ENV en Node.js?

Variables de entorno: antes de profundizar en NODE_ENV, tengamos algo de contexto sobre las variables de entorno. Una variable de entorno es un valor con nombre dinámico que normalmente se usa para proporcionar la capacidad de configurar el valor en el código de forma anónima desde el exterior. En pocas palabras, una variable de entorno es una variable (par clave-valor) cuyo valor se establece fuera del programa y su valor se puede usar dentro del código de forma anónima mediante algún mecanismo. Estas variables de entorno que se establecieron en el momento en que se inició el proceso están alojadas en la propiedad env proporcionada por el módulo principal del proceso de Node.js. 

Ejemplos de variables de entorno:

USER_ID=239482
KEY=foobar

Se puede acceder a las variables de entorno anteriores como:

process.env.USER_ID
process.env.KEY

Ahora que tenemos algunos conocimientos sobre las variables de entorno, avancemos y conozcamos NODE_ENV.

¿Qué es NODE_ENV?

NODE_ENV es una variable de entorno que significa entorno de Node en Express Server. La variable de entorno NODE_ENV especifica el entorno en el que se ejecuta una aplicación (normalmente, desarrollo o producción). Dependiendo de esto, una aplicación puede realizar tareas específicas como activar o desactivar la depuración, escuchar en un puerto específico, etc.

NODE_ENV como potenciador de rendimiento: una de las cosas más sencillas que podemos hacer para mejorar el rendimiento es establecer NODE_ENV en «producción». 

Establecer NODE_ENV en «producción» hace que Express:

  • Plantillas de vista de caché.
  • Caché de archivos CSS generados a partir de extensiones CSS.
  • Genere mensajes de error menos detallados.

Mejorando así el rendimiento de la aplicación, cuyo desarrollo es comparativamente más lento.

¿Cómo configurar correctamente NODE_ENV?

NODE_ENV funciona como cualquier otra variable de entorno. Cómo configurarlo depende de la plataforma que se utilice.

On Linux and OSX: export NODE_ENV=production
On Windows: $env:NODE_ENV = 'production'

Establecer al momento de iniciar la aplicación: en todas las plataformas, podemos establecer explícitamente el NODE_ENV al momento de iniciar la aplicación como: 

NODE_ENV=production node app.js

Acceso a NODE_ENV: podemos acceder a NODE_ENV como cualquier otra variable de entorno usando process y env de NodeJS como ya hemos visto al aprender sobre las variables de entorno.

process.env.NODE_ENV

Podemos escribir código específico del entorno comprobando el valor de NODE_ENV mediante process.env.NODE_ENV.

A continuación se muestran algunos fragmentos de código como referencia para acceder y usar NODE_ENV:

Ejemplo 1:

Javascript

var environment = process.env.NODE_ENV;
  
if(environment === 'production') {
  
    /* Do something specific
    to production environment. */
}

Ejemplo 2:

Javascript

var environment = process.env.NODE_ENV;
  
if(environment === 'development') {
  
    // connect to local database.
}
else {
  
    // connect to hosted database.
}

Tenga en cuenta que:

  • Podemos usar la función app.get(‘env’) provista por express para obtener el valor de NODE_ENV pero por defecto es «desarrollo» en lugar de producción.
  • Si NODE_ENV no se establece explícitamente para el entorno y se accede mediante process.env , no estará definido.
  • Es una mala idea configurar NODE_ENV desde dentro de una aplicación. En tal caso, sólo se aplicará al proceso desde el que se fijó.

Conclusión: prácticamente hemos cubierto todo sobre NODE_ENV en este artículo. Vimos cómo es similar a cualquier otra variable de entorno, pero puede ser una herramienta útil cuando queremos escribir código o lógica específicos del entorno. Vimos cómo configurar y usar la variable de entorno NODE_ENV, su propósito y sus usos. 

Publicación traducida automáticamente

Artículo escrito por sandeepkrsuman y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *