Variables de entorno en NodeJS, acceso y definición

  • Por
Qué son las variables de entorno, cómo generarlas al ejecutar una aplicación NodeJS y cómo acceder a ellas desde el código de un script.

Continuamos explicando cosas básicas de la plataforma Node, necesarias para seguir avanzando nuestro Manual de NodeJS. En este artículo veremos qué son las variables de entorno y cómo usarlas para solucionar una de las necesidades básicas de programas que deben ser capaces de funcionar en diferentes ambientes.

Básicamente aprenderemos a definir los valores de las variables de entorno al ejecutar un script Node y cómo recuperarlos dentro del código de los programas, por medio de la biblioteca básica de NodeJS.

Qué son las variables de entorno

Las variables de entorno sirven para definir parámetros sencillos de configuración de los programas, de modo que éstos puedan ejecutarse en diferentes ambientes sin necesidad de modificar el código fuente de un script.

Son útiles en diversos casos del desarrollo en general, pero muy habituales en el desarrollo web porque en la mayoría de las ocasiones los programas se deben ejecutar en diferentes ordenadores. Por ejemplo, durante la etapa de desarrollo puede que tengamos unas configuraciones de entorno y cuando se ponga el programa en producción éstas cambien.

Ejemplos habituales de las variables entorno serían el puerto donde escucha un servidor web, el servidor de base de datos, junto con el usuario y clave para conexión, llaves de APIs, etc. Todos esos valores generalmente pueden cambiar cuando se escribe un programa (al ejecutarlo en local) y cuando se publica el script en un servidor en producción.

Los valores no querremos escribirlos "a fuego" en el programa (de manera literal en el código) porque esto nos obligaría a cambiar el código del programa cada vez que se ejecuta en diferentes lugares, dificultando el proceso de despliegue de los programas. Generalmente desearemos definir esos valores al ejecutar el programa, de modo que cuando lancemos los scripts se pueblen esos valores necesarios para funcionar en cualquier ambiente.

Seguro que si estás familiarizado con el desarrollo web estarás al tanto de la necesidad de las variables de entorno y si no es así este artículo te puede abrir las puertas a soluciones que más tarde o temprano vas a tener que implementar.

Cómo leer variables de entorno en un script NodeJS

Gracias a el objeto "process", disponible en todo programa NodeJS (que nos da información sobre el proceso que está ejecutando este script), tenemos acceso a las variables de entorno de una manera sencilla. Simplemente usamos la propiedad "env" y luego el nombre de la variable que necesitamos acceder.

Por ejemplo, una variable de entorno llamada "PORT" se accedería a través de esta referencia:

process.env.PORT
Nota: Debido a la naturaleza de los objetos en Javascript, podemos acceder a las propiedades de objetos con notación similar a la que se accede a los arrays. Esto es algo especialmente útil cuando el nombre de la variable de entorno lo tenemos en una cadena. Esta misma variable de entorno la podríamos acceder de este modo:

process.env['PORT']

Lo que puede ocurrir es que las variables de entorno no siempre se hayan definido, por lo que es útil que en nuestro programa les asignemos unos valores predeterminados. Esto lo podemos conseguir con un código como este:

var puerto;
if(process.env.PORT) {
  puerto = process.env.PORT;
} else {
  puerto = 3000;
}

Sin embargo, una estructura condicional como la anterior se puede expresar de una manera mucho más resumida en Javascript, que debes de conocer:

var apiKey = process.env.APIKEY || 'HF33o9o-gl444olk-992ks';

Otra cosa que podrías realizar para definir los valores de variables de entorno por defecto es escribirlos directamente sobre el propio objeto "process.env". Esto podría ser útil para compartir esos valores en diferentes módulos de tu aplicación, ya que process.env es un objeto disponible de manera global.

process.env.DB_HOST = process.env.DB_HOST || 'host.db.app.example.com';

Esto produce que, si existe esa variable de entorno, no se modifique, pero si no existe se crea con un valor predeterminado. Esta construcción es perfectamente posible porque en Javascript somos capaces de escribir cualquier propiedad en cualquier objeto, aunque sean objetos "de sistema".

Cómo definir las variables de entorno en el momento de ejecución de un programa Node

Al invocar un script Node desde el terminal podemos definir si lo deseamos los valores de las variables de entorno que necesitemos. Esto se hace antes de ejecutar el programa en si, asignando los valores a las variables necesarias.

Como sabes, una aplicación node se ejecuta así: (si el archivo de arranque se llama "simple-env.js")

node simple-env

Ahora, para especificar las variables de entorno, en lo que era nuestro comando "node" seguido del script a ejecutar, anteponemos la asignación de aquellas variables que deseemos definir.

PORT=3001 APIKEY=880088 node simple-env

Conclusión

Eso es todo lo que necesitas conocer de las variables de entorno para usarlas en tu aplicación NodeJS. Como has visto, su uso es realmente sencillo y sus aplicaciones son muy amplias y útiles.

Otra cosa es cómo las quieras gestionar de una manera ágil en tu programa, manteniendo quizás sus valores en un archivo de texto independiente, fácil de editar y de mantener en tu repositorio de código. Eso que es un poco más avanzado lo veremos en un artículo más adelante: Gestión ágil de variables de entorno NodeJS.

Autor

Miguel Angel Alvarez

Miguel es fundador de DesarrolloWeb.com y la plataforma de formación online EscuelaIT. Comenzó en el mundo del desarrollo web en el año 1997, transformando su hobby en su trabajo.

Compartir

Comentarios

Lucas

02/11/2016
Variables de entorno definidas
En tiempo de ejecución se pueden cambiar los valores de las variables de entorno?

midesweb

17/1/2017
cambiar variables de entorno en ejecución
Pues son como otras variables, las podrías cambiar en ejecución. No lo he necesitado nunca, pero pensando en Node/Javascript no veo impedimento