Las variables de entorno son pares de clave-valor almacenados fuera del código de la aplicación, que permiten configurar aspectos de la aplicación de manera externa y segura.
# Crear nuevo proyecto
mkdir dotenv-demo
cd dotenv-demo npm init -y npm install dotenv # Archivo .env
PORT=3000
DATABASE_URL=mongodb://localhost:27017/mibasedatos
API_KEY=mi_clave_secreta_de_api
JWT_SECRET=mi_secreto_super_seguro
DEBUG=true // Cargar variables de entorno al inicio de la aplicación
require('dotenv').config();
// Acceder a variables de entorno
const port = process.env.PORT || 4000;
const databaseUrl = process.env.DATABASE_URL;
const apiKey = process.env.API_KEY; const express = require('express');
const dotenv = require('dotenv');
// Cargar variables de entorno
dotenv.config();
const app = express();
const PORT = process.env.PORT || 3000;
const DEBUG = process.env.DEBUG === 'true';
app.get('/', (req, res) => {
res.json({
message: 'Aplicación funcionando',
port: PORT,
debugMode: DEBUG
});
});
app.listen(PORT, () => {
if (DEBUG) {
console.log(`Servidor corriendo en puerto ${PORT} en modo DEBUG`);
}
}); const mongoose = require('mongoose');
// Conexión a MongoDB usando variables de entorno
mongoose.connect(process.env.DATABASE_URL, {
useNewUrlParser: true,
useUnifiedTopology: true
});
const db = mongoose.connection;
db.on('error', console.error.bind(console, 'Error de conexión:'));
db.once('open', () => {
console.log('Conectado a la base de datos');
}); const axios = require('axios');
// Configuración de cliente API
const apiClient = axios.create({
baseURL: process.env.API_BASE_URL,
headers: {
'Authorization': `Bearer ${process.env.API_KEY}`,
'Content-Type': 'application/json'
}
});
// Ejemplo de solicitud
async function fetchData() {
try {
const response = await apiClient.get('/datos');
return response.data;
} catch (error) {
console.error('Error al obtener datos:', error);
}
} # .env.development
PORT=3000
DEBUG=true
DATABASE_URL=mongodb://localhost:27017/desarrollo
# .env.production
PORT=80
DEBUG=false
DATABASE_URL=mongodb://produccion-server/mibasedatos // Seleccionar archivo de configuración
const environment = process.env.NODE_ENV || 'development';
require('dotenv').config({
path: `.env.${environment}`
}); .env.env.example como plantilla# Archivos a ignorar
node_modules/
.env
*.log # Plantilla de configuración
PORT=3000
DATABASE_URL=mongodb://localhost:27017/mibasedatos
API_KEY=tu_clave_api_aqui Código verifica si las variables de entorno necesarias (PORT, DATABASE_URL, API_KEY) están definidas en la aplicación.
Si alguna de ellas falta, se muestra un mensaje de error en la consola y se detiene la ejecución del programa.
Finalmente, la función validarConfiguracion se llama al inicio de la aplicación para asegurarse de que todas las configuraciones requeridas están presentes antes de continuar.
function validarConfiguracion() {
const requiredEnvs = ['PORT', 'DATABASE_URL', 'API_KEY'];
requiredEnvs.forEach(env => {
if (!process.env[env]) {
console.error(`Error: Falta la variable de entorno ${env}`);
process.exit(1);
}
});
}
// Llamar al inicio de la aplicación
validarConfiguracion(); Las variables de entorno con dotenv son fundamentales para configurar aplicaciones Node.js de manera segura y flexible, permitiendo una gestión eficiente de configuraciones entre diferentes entornos.