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:
En macOS y Linux
En macOS y Linux, puedes configurar variables de entorno en la terminal:
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
:
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:
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
-
Crea un archivo
.env
en la raíz de tu proyecto con el siguiente contenido:NODE_ENV=development PORT=4000
-
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
-
Añade una variable de entorno para la URL de la base de datos en tu archivo
.env
:DATABASE_URL=mongodb://localhost:27017/mydatabase
-
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
- Creando un Servidor HTTP Simple
- Manejo de Solicitudes y Respuestas
- Sirviendo Archivos Estáticos
- Enrutamiento
Módulo 5: NPM y Gestión de Paquetes
- Introducción a NPM
- Instalación y Uso de Paquetes
- Creación y Publicación de Paquetes
- Versionado Semántico
Módulo 6: Framework Express.js
- Introducción a Express.js
- Configuración de una Aplicación Express
- Middleware
- Enrutamiento en Express
- Manejo de Errores
Módulo 7: Bases de Datos y ORMs
- Introducción a las Bases de Datos
- Usando MongoDB con Mongoose
- Usando Bases de Datos SQL con Sequelize
- Operaciones CRUD
Módulo 8: Autenticación y Autorización
- Introducción a la Autenticación
- Usando Passport.js
- Autenticación JWT
- Control de Acceso Basado en Roles
Módulo 9: Pruebas y Depuración
- Introducción a las Pruebas
- Pruebas Unitarias con Mocha y Chai
- Pruebas de Integración
- Depuración de Aplicaciones Node.js
Módulo 10: Temas Avanzados
- Módulo Cluster
- Hilos de Trabajo
- Optimización del Rendimiento
- Construcción de APIs RESTful
- GraphQL con Node.js
Módulo 11: Despliegue y DevOps
- Variables de Entorno
- Usando PM2 para la Gestión de Procesos
- Desplegando en Heroku
- Integración y Despliegue Continuos