
Configurando un servidor Express en Node.js
Por Ezequiel Orazi, desarrollador full-stack
Actualizado en junio de 2026. Agregué una sección sobre Express 5 (ya estable) y Node.js moderno: manejo automático de errores en handlersasync,express.json()integrado sinbody-parser,fetchnativo en Node y módulos ES. La base que verás abajo sigue siendo válida.
Introducción
Express.js es un framework minimalista de Node.js que permite crear servidores y manejar rutas de forma sencilla y eficiente. Con Express, puedes configurar un servidor en pocos pasos y comenzar a manejar solicitudes HTTP de manera organizada. En esta guía, aprenderás cómo crear y configurar un servidor básico en Node.js usando Express.
Instalación de Node.js y Express
Antes de comenzar, asegúrate de tener Node.js instalado en tu sistema. Puedes verificarlo ejecutando el siguiente comando en la terminal:
node -v
Si Node.js está instalado correctamente, verás la versión actual. A continuación, crea una nueva carpeta para tu proyecto, navega a ella y ejecuta npm init -y para iniciar un proyecto Node.js:
mkdir mi-servidor-express
cd mi-servidor-express
npm init -y
Luego, instala Express usando el comando npm install express:
npm install express
Configuración básica del servidor
Una vez que Express esté instalado, crea un archivo llamado server.js en el directorio principal del proyecto. Este archivo contendrá la configuración básica para tu servidor Express. Aquí tienes un ejemplo de configuración básica:
// server.js
const express = require('express');
const app = express();
const PORT = 3000;
app.get('/', (req, res) => {
res.send('¡Hola, mundo desde Express!');
});
app.listen(PORT, () => {
console.log(`Servidor escuchando en http://localhost:${PORT}`);
});
En este ejemplo, estamos creando una aplicación Express, definiendo una ruta simple / que responde con el mensaje "¡Hola, mundo desde Express!" y configurando el servidor para que escuche en el puerto 3000.
Manejo de rutas en Express
Express facilita la creación de rutas para manejar diferentes solicitudes HTTP. Aquí tienes un ejemplo de cómo definir rutas GET, POST, PUT, y DELETE:
app.get('/api', (req, res) => {
res.send('Solicitud GET recibida');
});
app.post('/api', (req, res) => {
res.send('Solicitud POST recibida');
});
app.put('/api', (req, res) => {
res.send('Solicitud PUT recibida');
});
app.delete('/api', (req, res) => {
res.send('Solicitud DELETE recibida');
});
Cada una de estas rutas responde a un tipo específico de solicitud HTTP y devuelve un mensaje de confirmación.
Uso de middleware
El middleware en Express es una función que se ejecuta antes de que la solicitud llegue a la ruta final. Puedes usar middleware para tareas como registrar solicitudes, verificar autenticación o procesar datos. A continuación, se muestra un ejemplo de middleware que registra cada solicitud:
app.use((req, res, next) => {
console.log(`${req.method} ${req.url}`);
next();
});
En este ejemplo, el middleware registra el método y la URL de cada solicitud y luego llama a next() para pasar el control a la siguiente función de middleware o a la ruta.
Configuración de rutas dinámicas
Express permite definir rutas con parámetros para manejar solicitudes dinámicas. Por ejemplo:
app.get('/usuario/:id', (req, res) => {
const userId = req.params.id;
res.send(`Usuario ID: ${userId}`);
});
En esta ruta, :id es un parámetro que se captura a partir de la URL. Cuando un usuario accede a /usuario/123, el servidor responderá con "Usuario ID: 123".
Servir archivos estáticos
Para servir archivos estáticos como imágenes, CSS, o JavaScript, usa el middleware express.static. Primero, crea una carpeta llamada public en el directorio de tu proyecto y coloca allí tus archivos. Luego, configura Express para servir esta carpeta:
app.use(express.static('public'));
Ahora, puedes acceder a los archivos estáticos en la carpeta public desde cualquier ruta. Por ejemplo, si tienes un archivo public/imagen.png, puedes acceder a él en http://localhost:3000/imagen.png.
Escuchando solicitudes en un puerto
Por último, configura el servidor para escuchar en un puerto determinado. Este es el código necesario para que tu servidor escuche en el puerto 3000:
app.listen(PORT, () => {
console.log(`Servidor escuchando en http://localhost:${PORT}`);
});
Express 5 y Node moderno (2026)
Desde que se publicó esta guía, Express 5 pasó a ser la versión estable y Node.js sumó mejoras importantes. Esto es lo que conviene aplicar hoy:
- Errores en handlers async automáticos: en Express 5, si una función
asynclanza un error o una promesa se rechaza, se reenvía solo al middleware de errores. Ya no hace falta envolver todo entry/catch+next(err). express.json()integrado: Express ya trae el parser de JSON y de formularios, así que no necesitás instalarbody-parserpor separado.fetchnativo: Node moderno incluyefetchglobal, sinnode-fetchniaxiospara casos simples.- Módulos ES: podés usar
import express from 'express'en lugar derequireagregando"type": "module"en tupackage.json.
// Express 5 + ESM: el error async se captura solo
import express from 'express';
const app = express();
app.use(express.json()); // body-parser ya no es necesario
app.get('/usuario/:id', async (req, res) => {
const data = await obtenerUsuario(req.params.id); // si falla, va al handler de errores
res.json(data);
});
app.use((err, req, res, next) => {
res.status(500).json({ error: err.message });
});
Conclusión
En este artículo, hemos cubierto los conceptos básicos para configurar un servidor con Express en Node.js, desde la instalación hasta la creación de rutas y el uso de middleware. Express hace que sea sencillo y rápido configurar un servidor y manejar rutas, lo que lo convierte en una excelente opción para desarrolladores que buscan eficiencia y flexibilidad en sus proyectos Node.js. ¡Ahora estás listo para comenzar a construir aplicaciones más complejas con Express!
Seguí aprendiendo
¿Necesitás un backend o una API para tu proyecto? Contame qué estás construyendo.