Cargar variables de entorno en Node.js y npm con DotEnv: Guía clara

Go to Homepage

Introducción a la carga de variables de entorno en Node.js y npm con DotEnv

Si hay algo que es muy importante en el desarrollo de aplicaciones web es la seguridad. Y una forma de garantizar la seguridad de una aplicación es proteger las credenciales de acceso a servicios de terceros.

Por lo general, estos credenciales son guardados en variables de entorno. Y en Node.js, una forma sencilla de manejarlas es mediante el uso de DotEnv.

DotEnv es un módulo de Node.js que lee las variables de entorno desde un archivo .env, y las carga en una variable global llamada process.env.

Este módulo es muy útil para proteger información confidencial, como contraseñas, claves de API y credenciales de bases de datos. Además, puede ser utilizado sin problemas en cualquier plataforma donde se ejecute JavaScript.

En esta guía, vamos a explicar cómo cargar variables de entorno en Node.js y npm utilizando DotEnv.

Configurando DotEnv

El primer paso es instalar DotEnv. Para ello, ejecutando el siguiente comando en la línea de comandos:

npm install dotenv

Una vez instalado, vamos a crear el archivo .env en la raíz del proyecto, y vamos a añadir las variables que queremos manejar con DotEnv. Por ejemplo:

API_KEY=xyz123
DATABASE_PASSWORD=12345678

Podemos acceder a estas variables desde cualquier parte del código utilizando process.env.

const apiKey = process.env.API_KEY;
const dbPassword = process.env.DATABASE_PASSWORD;

Con esto, podemos tener un código más seguro y más fácil de mantener. En lugar de tener que guardar credenciales en variables en el código, podemos guardarlas en un solo lugar seguro.

Pero hay una cosa importante que debemos recordar: debemos asegurarnos de no subir el archivo .env a nuestro repositorio de código, ya que esto podría exponer nuestras credenciales en línea.

Por último, es importante mencionar que DotEnv solo funciona en entornos locales. Si queremos usarlo en un servidor de producción, deberemos configurar las variables de entorno manualmente en el servidor, o utilizar otra herramienta de gestión de entornos como Kubernetes.

DotEnv es una herramienta muy útil para manejar credenciales de forma segura en nuestras aplicaciones de Node.js. Con él, podemos guardar nuestras variables de entorno en un solo lugar y acceder a ellas desde cualquier parte del código. Sin embargo, debemos recordar no subir este archivo a nuestro repositorio, para evitar exponer nuestras credenciales.

Instalación y configuración de DotEnv

En esta sección vamos a ver cómo instalar y configurar DotEnv para poder cargar variables de entorno en Node.js y npm de manera sencilla.

Para empezar, lo primero que debemos hacer es instalar DotEnv en nuestro proyecto. Para hacerlo, simplemente abrimos una terminal en la carpeta raíz del proyecto y ejecutamos el siguiente comando:

npm install dotenv

Una vez instalado, lo siguiente es crear un archivo llamado .env en la raíz del proyecto. Este archivo va a contener nuestras variables de entorno, por lo que debemos tener cuidado de no compartirlo públicamente (agregarlo al archivo .gitignore es una buena práctica).

En el archivo .env podemos definir nuestras variables de entorno utilizando la siguiente sintaxis:

VARIABLE=valor

Por ejemplo:

DB_HOST=localhost
DB_PORT=5432
DB_USER=usuario
DB_PASSWORD=password-secreto

Ahora que tenemos nuestras variables de entorno definidas, podemos utilizar DotEnv para cargarlas en nuestro proyecto. Para hacerlo, simplemente tenemos que agregar las siguientes líneas al inicio de nuestro archivo .js:

require("dotenv").config();

Este código va a cargar las variables de entorno del archivo .env en las variables de nuestro proyecto. Por ejemplo, si queremos acceder a la variable DB_HOST, podemos hacerlo de la siguiente manera:

const dbHost = process.env.DB_HOST;

En este ejemplo, la variable dbHost va a contener el valor definido en el archivo .env.

Y listo, con esto ya tenemos configurado DotEnv en nuestro proyecto. Ahora podemos utilizar variables de entorno sin tener que preocuparnos por cargarlas manualmente en nuestro código.

Es importante tener en cuenta que DotEnv solo carga las variables de entorno en el proceso actual. Si tenemos varios procesos corriendo (por ejemplo, un servidor Express y un worker de background), cada proceso debe cargar las variables de entorno por separado.

DotEnv nos permite cargar variables de entorno de manera sencilla en nuestros proyectos Node.js y npm. Para utilizarlo, solamente debemos instalarlo, definir nuestras variables de entorno en el archivo .env y cargarlas en nuestro código utilizando require('dotenv').config().

Cómo utilizar variables de entorno en tu aplicación Node.js

Cuando desarrollas una aplicación Node.js, es común que manejes información que no deseas que sea pública, como claves de API o credenciales de bases de datos. Para mantener esta información segura, es importante utilizar variables de entorno.

Las variables de entorno son valores que existen en el sistema operativo en el que se está ejecutando la aplicación y que se pueden acceder desde la aplicación. Puedes pensar en ellas como una especie de caja fuerte que mantiene información confidencial protegida.

Para utilizar variables de entorno en tu aplicación Node.js, necesitas utilizar una biblioteca de terceros llamada dotenv. Esta biblioteca te permite leer variables de entorno desde un archivo llamado .env y cargarlas en la aplicación.

Primero, debes instalar dotenv ejecutando el siguiente comando en la línea de comandos:

npm install dotenv

Luego, crea un archivo llamado .env en la raíz de tu proyecto y agrega las siguientes variables:

API_KEY=*******************
DB_USER=*************
DB_PASSWORD=*************

Puedes incluir tantas variables como necesites, solo asegúrate de que cada variable tenga un nombre único.

Ahora, en tu archivo principal de la aplicación, agrega la siguiente línea al principio del archivo:

require("dotenv").config();

Esto cargará automáticamente las variables de entorno desde el archivo .env en la aplicación.

Para acceder a una variable de entorno en tu código, utiliza process.env.NOMBRE_VARIABLE.

Por ejemplo, si quisieras acceder a la clave de API desde el ejemplo anterior, podrías hacerlo así:

const apiKey = process.env.API_KEY;

Si estás trabajando en un equipo, es importante que compartas el archivo .env con tus colaboradores y les expliques cómo cargar las variables de entorno en su entorno de desarrollo.

Utilizar variables de entorno en tu aplicación Node.js es una buena práctica de seguridad. La biblioteca dotenv hace que cargar estas variables sea fácil y sencillo. Al seguir esta técnica, puedes mantener tus claves de API y credenciales de bases de datos seguros mientras te concentras en desarrollar una gran aplicación.

Manejo de variables de entorno sensibles en producción

Cuando estamos trabajando en ambientes de producción y necesitamos manejar información crítica y sensible, como contraseñas, claves de autenticación y llaves de acceso a servicios externos, es necesario tener cuidado con la forma en que las manejamos en nuestra aplicación. En estos casos, podemos recurrir a herramientas que nos permitan cargar estas variables de entorno de manera segura y confiable.

Una de estas herramientas es DotEnv, que nos permite cargar las variables de entorno desde un archivo .env local, ya sea en nuestro entorno de desarrollo o en producción. Sin embargo, es importante tomar en cuenta que este archivo no debe ser incluido en nuestro sistema de control de versiones, ya que esto podría comprometer la seguridad de nuestra aplicación.

Para cargar estas variables de manera segura en producción, podemos utilizar herramientas como Heroku Config o AWS Secrets Manager, que nos permiten almacenar estas variables de manera seguro y confiable, y acceder a ellas desde nuestra aplicación en el momento en que las necesitamos.

Por ejemplo, supongamos que tenemos una variable de entorno llamada API_KEY que utilizamos para acceder a un servicio externo. En nuestro archivo .env, establecemos esta variable de la siguiente manera:

API_KEY=miapikeysecreta

En nuestro entorno de desarrollo, esto no representa ninguna complicación, ya que podemos acceder a esta variable directamente desde nuestro archivo .env. Sin embargo, en producción, es necesario tomar medidas adicionales para proteger esta información.

Para hacer esto, podemos almacenar esta variable de entorno en un servicio como AWS Secret Manager. Luego, podemos acceder a esta variable desde nuestra aplicación utilizando la API proporcionada por este servicio:

const AWS = require("aws-sdk");
const client = new AWS.SecretsManager({ region: "us-east-1" });

client.getSecretValue({ SecretId: "miapikeysecreta" }, function (err, data) {
    if (err) {
        console.log(err);
        return;
    }

    const apikey = JSON.parse(data.SecretString).API_KEY;

    // Utilizamos la variable de entorno segura en nuestra aplicación
    console.log(apikey);
});

De esta manera, podemos acceder a nuestra variable de entorno sensible de manera segura y confiable, sin comprometer la seguridad de nuestra aplicación.

El manejo de variables de entorno sensibles en producción es un aspecto crítico que debe ser tomado en cuenta en cualquier aplicación web. Herramientas como DotEnv y servicios como AWS Secrets Manager nos permiten manejar estas variables de manera segura y confiable, asegurando la protección de la información crítica de nuestra aplicación.

Beneficios de utilizar DotEnv en tus proyectos de Node.js y npm

Si has estado trabajando con Node.js y npm durante un tiempo, probablemente ya te habrás topado con la necesidad de manejar variables de entorno. Estas variables ofrecen una manera de definir y pasar información sensible, como una clave API o credenciales de acceso, a través de tu aplicación sin exponerlas a la vista pública.

Sin embargo, trabajar con variables de entorno en Node.js y npm puede ser complicado. Cargarlas manualmente en cada archivo es tedioso, y es muy fácil cometer errores al hacerlo. Además, si estás trabajando en un equipo, tendrás que asegurarte de que todos los archivos están actualizados con las mismas variables.

Es por eso que DotEnv es una herramienta valiosa para cualquier proyecto de Node.js y npm. DotEnv te permite cargar variables de entorno desde un archivo separado, aislándolas del resto de tu código y haciendo más fácil su gestión.

Aquí están algunos de los beneficios que hemos encontrado al utilizar DotEnv en nuestros proyectos:

1. Fácil gestión de variables de entorno

Incluir DotEnv en tu proyecto te permite crear un archivo .env que contiene todas tus variables de entorno. Este archivo es separado de tu código principal, lo que mantiene en privado la información sensible.

Por ejemplo, podrías tener un archivo .env que contenga:

API_KEY=123456789
DB_HOST=localhost

Entonces, simplemente cargas estas variables en tu aplicación con un pequeño bloque de código:

require("dotenv").config();

const apiKey = process.env.API_KEY;
const dbHost = process.env.DB_HOST;

2. Configuración consistente para tus proyectos

DotEnv proporciona una manera fácil y consistente de manejar variables de entorno en todos tus proyectos de Node.js y npm. Podrás separar la información sensible del código principal y cargar las variables requeridas de manera segura y sencilla.

3. Integración de diferentes ambientes

Con DotEnv, puedes cargar variables de entorno específicas para diferentes entornos (como desarrollo, pruebas y producción) utilizando múltiples archivos .env. Esto te permitirá mantener un control total sobre la configuración de tu aplicación y asegurar un funcionamiento sin errores.

4. Funcionamiento seguro y confiable

DotEnv hace posible un manejo seguro y confiable de las variables de entorno. Las variables de entorno pueden contener información sensible, como contraseñas y claves de API, y DotEnv mantiene esta información protegida. Con DotEnv, puedes estar seguro de que la seguridad y la privacidad de la información de tu aplicación están protegidas.

DotEnv es una herramienta imprescindible para cualquier proyecto de Node.js y npm. Utilizar esta herramienta te permitirá manejar variables de entorno de manera más eficiente, separar la información sensible de tu código principal y proteger la privacidad de la información de tu aplicación. Además, la facilidad en la integración hace posible que cualquier equipo de trabajo pueda utilizarla sin ningún problema.

Otros Artículos