Avatar byandrev

byandrev

Desplegar una API de Node.js con TypeScript en Vercel: una pesadilla innecesaria

Published on May 5, 2025 • 5 min read

Hoy me tocó pelear con algo que debería ser fácil: desplegar una API en Node.js con TypeScript. Parecía fácil, pero terminó siendo una tarde que me quitó horas de tiempo y me dio dolores de cabeza.

Lo que hice

Tengo una pequeña API escrita en TypeScript, para mi blog. Decidí desplegarla en Vercel aprovechando su soporte para funciones serverless. La idea era transpilar el codigo y ejecutarlo en Vercel como ya lo he hecho en algunas ocasiones, pero no fue tan sencillo.

Problemas y soluciones

  1. Había un problema al ejecutar el proyecto, Vercel no tiene soporte nativo a aplicaciones Node, no es como el resto de frameworks como React o Next donde se selecciona y listo, Vercel hace el resto, aquí no, aquí se debe crear un archivbo de configutacion vercel.json y definir cómo funcionará. El problema estaba a la hora de transpilar el codigo y ejecutar este javascript generado en Vercel.

  2. Otro error que tengo, que tengo que aclarar no es de Vercel, pero si me paso fue a la hora de usar imports globales, por ejemplo tenía definido el path @/ que apuntaba a ./src para hacer más limpias las importaciones de arhivox y evitar el ../../, pero tuve un problema a la hora de transpilar el codigo y que no encontraba esa ruta.

  3. La solución sucia, una alternativa que probé fue compilar todo localmente y subir la carpeta dist al repo. De esa forma, Vercel simplemente ejecuta los archivos .js ya generados sin preocuparse por TypeScript. Pero obviamente es sucia y horrible.

¿Funciona? Sí. ¿Es elegante? Para nada.

Es básicamente renunciar a las buenas prácticas, es más un parche que una solución real.

Aprendizajes

  • Debo leer más la documentación de Vercel y el resto de herramientas que utilice, así me evito problemas innecesarios, aunque la documentación en estos aspectos de Vercel podría mejorar.
  • Las funciones serverless tienen sus límites. Especialmente si necesitas control sobre el entorno de ejecución.
  • Compilar TypeScript fuera de Vercel y subir los archivos .js es una solución temporal. Pero no es sostenible a largo plazo, especialmente si el proyecto crece.

Próximos pasos

Después de este desastre, estoy buscando otras opciones para desplegar la API. Estoy evaluando:

  • Railway: tiene buen soporte para Node.js y TypeScript, y es muy fácil de usar.
  • Render: parece más flexible que Vercel y no te obliga a usar serverless si no quieres.
  • VPS con Docker: más trabajo, pero también más control. Seria mas caro.

Lo único claro es que no quiero volver a pelearme con vercel.json por un simple endpoint (por ahora).