Node.js

Variables de entorno en Node.js

     

Ahora que ya hemos visto cómo modularizar nuestro código en proyectos Node, vamos a explicar otra buena práctica de programación que también podemos llevar a cabo en nuestros desarrollos: almacenar en variables de entorno los parámetros que sean configurables en un proyecto.

Por ejemplo, el puerto por el que pongamos en marcha un servidor, o la dirección de conexión a una base de datos pueden variar dependiendo de dónde despleguemos la aplicación. En lugar de estar cambiando el código fuente de nuestros proyectos en cada punto donde los despleguemos, podemos dejar en un fichero de texto todos estos parámetros, y referenciarlos desde el programa.

1. El fichero .env

El fichero .env es un fichero de configuración de variables de entorno (environment) que se está haciendo cada vez más popular en diferentes frameworks de desarrollo. Por ejemplo, imaginemos que queremos guardar en dicho fichero el puerto de conexión y el login del usuario de la base de datos. El contenido del fichero .env podría ser algo así:

PUERTO = 8080
LOGIN_BD = usu1

Este fichero .env se coloca en la carpeta raíz de nuestro proyecto, y a continuación veremos cómo acceder a él.

2. Acceso al fichero .env

Existen distintas formas de gestionar las variables almacenadas en el fichero .env. Aquí vamos a explicar dos de ellas.

2.1. La librería dotenv

La librería dotenv es una popular librería cuya principal misión es justo ésa, cargar y acceder al contenido del fichero .env (leído en inglés dot env). Su uso es muy sencillo: se instala con el correspondiente comando npm install y luego se carga en los ficheros donde necesitemos utilizar el contenido de .env. Finalmente, usando su método config cargamos el contenido del fichero, y lo tendremos disponible en la variable process.env.

Si, por ejemplo, queremos recuperar el puerto de conexión almacenado en la variable de entorno PUERTO del ejemplo anterior, bastaría con algo así:

const dotenv = require("dotenv");
dotenv.config();
// Aquí ya tenemos cargadas las variables de entorno del fichero
console.log("Puerto de conexión:", process.env.PUERTO);

2.2. Carga desde Node.js

A partir de la versión 20 de Node.js ya se incorpora esta funcionalidad en el propio núcleo del framework, con lo que no es necesario acudir a la librería dotenv vista anteriormente. Si directamente ponemos process.env.X podremos acceder al contenido de la variable X, definida en el fichero .env.

3. Fichero .env y repositorios globales

Igual que ocurre con la carpeta node_modules, no es buena idea distribuir el fichero .env con el resto del proyecto, ya que puede contener información sensible que no debería ser accesible por cualquiera. Por este motivo, no es recomendable subir este fichero a repositorios GitHub, y se recomienda crear un fichero propio en cada sistema donde despleguemos el proyecto.

Así pues, nuestro fichero .gitignore podría tener este contenido para nuestros proyectos Node:

node_modules
.env