Avatar byandrev

byandrev

¡Mi API ya está corriendo en Vercel! Pero costó…

Published on May 21, 2025 • 5 min read

Después de días de frustración, errores extraños y pruebas interminables, por fin logré desplegar mi API en Vercel usando TypeScript y Express.js.

Problema 1: los paths en tsconfig.json

Uno de los primeros errores que encontré tenía que ver con los paths personalizados que había definido en el tsconfig.json. Por ejemplo, usaba rutas como @/config/..., lo cual me permitía escribir importaciones más limpias y organizadas.

El problema era que no se compilaban correctamente estos paths, y al momento del despliegue todo fallaba. La solución temporal y que funciona fue volver a usar rutas relativas, como ../../config/archivo.

No es cómodo, pero por ahora funciona.

Problema 2: ejecutar TypeScript directamente

Otro error que me tenía bloqueado era que estaba intentando ejecutar el archivo index.js, que es el resultado del TypeScript transpilado. Pero Vercel permite ejecutar directamente archivos .ts, y eso lo descubrí gracias a este artículo del blog de Vercel, donde explican cómo usar Express.js con soporte para TypeScript.

Sin embargo, el ejemplo del blog no funciona tal cual. Tuve que hacer varios ajustes manuales para adaptarlo a mi estructura de proyecto.

Codigo de la configuracion de Vercel para el despliegue

Problema 3: Prisma y el prisma generate

Estoy utilizando Prisma ORM para manejar la base de datos, y a la hora de ejecutar el proyecto en Vercel, el cliente de Prisma no estaba generándose, por lo que el código fallaba en tiempo de ejecución.

La solución fue agregar un script en el package.json que se ejecute después de instalar las dependencias:

"scripts": {
  "postinstall": "prisma generate"
}

De esta forma, Vercel ejecuta automáticamente el comando prisma generate y genera el cliente necesario para conectarse a la base de datos.

Con estos tres ajustes logré desplegar la API de mi blog en Vercel con éxito. Ahora mismo está corriendo y funcionando, pero eso no significa que sea la opción final. Seguiré buscando mejores soluciones.

Sigo evaluando Railway como una posible plataforma más estable y versátil para mis necesidades a largo plazo. No está descartado que termine invirtiendo un poco de dinero en esto y migrando la API para allá.