Las variables de entorno son una forma de almacenar información de configuración fuera de tu código fuente. Esto es especialmente útil para mantener la seguridad y la flexibilidad de tu aplicación, ya que puedes cambiar configuraciones sin modificar el código. En este tema, aprenderemos qué son las variables de entorno, cómo configurarlas y cómo usarlas en una aplicación Node.js.

¿Qué son las Variables de Entorno?

Las variables de entorno son pares clave-valor que se pueden usar para configurar el comportamiento de las aplicaciones. Estas variables se definen en el entorno del sistema operativo y pueden ser accedidas por cualquier proceso que se ejecute en ese entorno.

Ejemplos Comunes de Variables de Entorno

  • NODE_ENV: Define el entorno de ejecución de Node.js (por ejemplo, development, production).
  • PORT: El puerto en el que la aplicación debe escuchar.
  • DATABASE_URL: La URL de conexión a la base de datos.

Configuración de Variables de Entorno

En Sistemas Operativos

En Windows

Puedes configurar una variable de entorno en Windows usando el símbolo del sistema (cmd) o PowerShell:

set NODE_ENV=production
set PORT=3000

En macOS y Linux

En macOS y Linux, puedes configurar variables de entorno en la terminal:

export NODE_ENV=production
export PORT=3000

Usando un Archivo .env

Una práctica común es usar un archivo .env para definir variables de entorno. Este archivo no debe ser incluido en el control de versiones (por ejemplo, usando .gitignore en Git).

Ejemplo de un archivo .env:

NODE_ENV=development
PORT=3000
DATABASE_URL=mongodb://localhost:27017/mydatabase

Accediendo a Variables de Entorno en Node.js

Node.js proporciona el objeto process.env para acceder a las variables de entorno. Aquí hay un ejemplo de cómo puedes usarlo:

// app.js
const express = require('express');
const app = express();

const PORT = process.env.PORT || 3000;
const NODE_ENV = process.env.NODE_ENV || 'development';

app.get('/', (req, res) => {
  res.send(`Running in ${NODE_ENV} mode on port ${PORT}`);
});

app.listen(PORT, () => {
  console.log(`Server is running on port ${PORT}`);
});

Usando el Paquete dotenv

El paquete dotenv es una herramienta popular para cargar variables de entorno desde un archivo .env en process.env. Primero, instala el paquete:

npm install dotenv

Luego, carga las variables de entorno al inicio de tu aplicación:

// app.js
require('dotenv').config();
const express = require('express');
const app = express();

const PORT = process.env.PORT || 3000;
const NODE_ENV = process.env.NODE_ENV || 'development';

app.get('/', (req, res) => {
  res.send(`Running in ${NODE_ENV} mode on port ${PORT}`);
});

app.listen(PORT, () => {
  console.log(`Server is running on port ${PORT}`);
});

Ejercicio Práctico

Ejercicio 1: Configuración Básica

  1. Crea un archivo .env en la raíz de tu proyecto con el siguiente contenido:

    NODE_ENV=development
    PORT=4000
    
  2. Modifica tu aplicación Node.js para usar el paquete dotenv y cargar estas variables de entorno.

Solución

// app.js
require('dotenv').config();
const express = require('express');
const app = express();

const PORT = process.env.PORT || 3000;
const NODE_ENV = process.env.NODE_ENV || 'development';

app.get('/', (req, res) => {
  res.send(`Running in ${NODE_ENV} mode on port ${PORT}`);
});

app.listen(PORT, () => {
  console.log(`Server is running on port ${PORT}`);
});

Ejercicio 2: Variables de Entorno para Configuración de Base de Datos

  1. Añade una variable de entorno para la URL de la base de datos en tu archivo .env:

    DATABASE_URL=mongodb://localhost:27017/mydatabase
    
  2. Modifica tu aplicación para leer y usar esta variable de entorno.

Solución

// app.js
require('dotenv').config();
const express = require('express');
const mongoose = require('mongoose');
const app = express();

const PORT = process.env.PORT || 3000;
const NODE_ENV = process.env.NODE_ENV || 'development';
const DATABASE_URL = process.env.DATABASE_URL;

mongoose.connect(DATABASE_URL, { useNewUrlParser: true, useUnifiedTopology: true })
  .then(() => console.log('Connected to the database'))
  .catch(err => console.error('Could not connect to the database', err));

app.get('/', (req, res) => {
  res.send(`Running in ${NODE_ENV} mode on port ${PORT}`);
});

app.listen(PORT, () => {
  console.log(`Server is running on port ${PORT}`);
});

Conclusión

En esta sección, hemos aprendido qué son las variables de entorno, cómo configurarlas y cómo usarlas en una aplicación Node.js. Las variables de entorno son esenciales para mantener la configuración de tu aplicación flexible y segura. En el próximo módulo, exploraremos cómo usar PM2 para la gestión de procesos en aplicaciones Node.js.

Curso de Node.js

Módulo 1: Introducción a Node.js

Módulo 2: Conceptos Básicos

Módulo 3: Sistema de Archivos y E/S

Módulo 4: HTTP y Servidores Web

Módulo 5: NPM y Gestión de Paquetes

Módulo 6: Framework Express.js

Módulo 7: Bases de Datos y ORMs

Módulo 8: Autenticación y Autorización

Módulo 9: Pruebas y Depuración

Módulo 10: Temas Avanzados

Módulo 11: Despliegue y DevOps

Módulo 12: Proyectos del Mundo Real

© Copyright 2024. Todos los derechos reservados