Saca la configuración del código con dotenv, separa el desarrollo de la producción y mantén tus secretos fuera de Git.
Abrir esta lección en KodokonEl puerto de escucha, la URL de la base de datos, las claves de API: nada de esto pertenece al código fuente. Estos valores cambian entre tu máquina y la producción, y algunos son secretos. La solución estándar: variables de entorno, cargadas desde un archivo .env en desarrollo. Instala dotenv con npm install dotenv, luego crea el archivo en la raíz del proyecto.
PORT=3000
DATABASE_URL=postgres://localhost:5432/kodokon
SESSION_SECRET=change-this-valueImporta dotenv/config al principio de tu punto de entrada: las variables del archivo se copian en process.env. Un buen hábito profesional: centraliza la lectura en un único módulo de configuración, valida las variables al arrancar y falla de inmediato si falta alguna. Un servidor que se niega a arrancar es mejor que un servidor que se cae en la primera petición.
import "dotenv/config";
const required = ["PORT", "SESSION_SECRET"];
for (const name of required) {
if (!process.env[name]) {
throw new Error("Missing variable: " + name);
}
}
export const config = {
port: Number(process.env.PORT),
secret: process.env.SESSION_SECRET,
isProd: process.env.NODE_ENV === "production"
};En producción no hay archivo .env: el proveedor de alojamiento suministra los valores reales, y NODE_ENV vale production. Usa config.isProd para adaptar el comportamiento: logs detallados en desarrollo, mensajes de error contenidos en producción. Sube también al repositorio un archivo .env.example que enumere las variables esperadas con valores ficticios: documenta la configuración sin exponer los secretos.
import express from "express";
import { config } from "./config.js";
const app = express();
if (!config.isProd) {
console.log("Development mode");
}
app.listen(config.port, () => {
console.log("Port: " + config.port);
});.env ignorado por Git.env.example?.gitignore