TypeScript · Node.js 22
Hosting TypeScript 24/7
Dos caminos, los dos soportados: compilar con tsc y apuntar el MAIN a dist/index.js, o dejar que tsx ejecute el .ts en producción. Lo que la plataforma pide es que la decisión esté en el package.json y en el vertracloud.config.
Quién diseñó TypeScript
Anders Hejlsberg, ya autor de Turbo Pascal y C#, publicó TypeScript en Microsoft en 2012: JavaScript con un sistema de tipos que desaparece al compilar. La 0.8 salió ese año; la 1.0, en 2014. La tesis era gradual — anotas lo que cabe, el resto sigue siendo JS — y el emit es el mismo lenguaje que el navegador ya ejecutaba. No hay máquina virtual nueva: solo un paso más en el editor y el compilador.

Anders Hejlsberg
DBegley · CC BY 2.0
JavaScript con tipos
Eso es el producto: el mismo lenguaje de la web, con un sistema de tipos en el editor. No es un runtime nuevo ni una VM — es el JavaScript que ya tenías, anotado.
Los tipos no embarcan
Al compilar desaparecen. Lo que ejecuta el motor es JavaScript puro, lo mismo que el navegador ya corría en 1995.
Para código que crece
Hejlsberg venía de bases grandes en C# y Delphi. TypeScript existe para equipos y archivos que el JS suelto deja escapar — la migración es gradual, archivo a archivo.
Lo que la plataforma hace por un proyecto TypeScript
El build ocurre en el servidor, con toda su salida en la terminal — un error de tipos nunca se vuelve un crash silencioso en producción.
Compilado o ejecutado directo
Con tsc, MAIN apunta a dist/index.js y START ejecuta el script que compila antes de arrancar. Con tsx, MAIN es el propio .ts. La plataforma no impone ninguno de los dos — ejecuta lo que dice tu package.json.
El tsconfig.json vale en el build
El archivo de configuración va en el zip y es el mismo que lee el compilador en el servidor. Target, module, paths y strict se comportan igual que en tu máquina, y un error de compilación aparece en el log del build dentro del techo de 5 minutos.
dist no se elimina del paquete
La plataforma quita node_modules y .next del zip, pero nunca la carpeta de salida. Quien hace bundle antes de desplegar puede enviar dist listo y apuntar el MAIN dentro de ella, sin compilar otra vez en el servidor.
Auto-reinicio con freno
El proceso que cae se reinicia solo, en cualquier plan: el error en runtime que los tipos no atraparon no tumba el servicio. Si se rompe 5 veces en 10 minutos, el auto-reinicio se desactiva durante 24 horas — y salir con exit code 0 se sigue leyendo como un final normal, sin reinicio.
Lo que la gente ejecuta en TypeScript aquí
El tipado sirve tanto para la API que consume otro equipo como para el bot que solo tú mantienes.
APIs Nest, Fastify y Hono
Publica la aplicación para recibir un subdominio en vertraweb.app con TLS. Si compilas a dist, es el servidor compilado el que debe escuchar en 0.0.0.0 y en el puerto declarado en PORT — atarlo a localhost devuelve timeout.
Bots de Discord tipados
discord.js con tipos de comando y evento corre como proceso en segundo plano, sin puerto HTTP. El token va en las variables de entorno del panel, nunca en un .env dentro del zip.
Workers y jobs con Prisma o Drizzle
Consumidor de cola, rutina programada, ETL: el esquema tipado sube junto con el código. Ejecuta la migración como parte de tu script de start, no en el build.
ORM tipado con base gestionada
Prisma y Drizzle apuntan a un PostgreSQL 17 o un MySQL 8.0 creado en el mismo panel, por el host interno. TLS es obligatorio: el certificado y la contraseña los genera la plataforma y quedan disponibles para descargar.
Versiones de Node.js para TypeScript
TypeScript corre sobre Node.js: la recomendada es la 22, y la 20 y la 18 siguen disponibles. Para fijar una, declara VERSION en el vertracloud.config.
| Versión | vertracloud.config | Estado |
|---|---|---|
| Node.js 22 | VERSION=22 | RecomendadaMás reciente |
| Node.js 20 | VERSION=20 | |
| Node.js 18 | VERSION=18 |
La configuración entera
El vertracloud.config es un archivo INI opcional en la raíz del proyecto. Aquí el MAIN apunta a la salida compilada y el START llama al script del package.json; BUILD ejecuta la compilación en cada despliegue, antes de que la app inicie; VERSION elige el Node.js y MEMORY define el techo de RAM.
NAME=minha-api
MAIN=dist/index.js
START=npm start
VERSION=22
MEMORY=512Un plan para cada etapa del proyecto
La memoria y el almacenamiento cambian según el plan; el lenguaje, no. Compara lo que abre cada plan y elige el que le sirve al proyecto hoy.
Comparar planesTambién corre aquí
Misma plataforma, mismo deploy, otro stack.
Preguntas frecuentes sobre hosting TypeScript
tsc o tsx, dist o servidor: las dudas que separan los dos caminos.
El log dice tsx: command not found o ts-node: command not found.
Lo que ejecuta el .ts en producción es dependencia de ejecución, no de desarrollo. Añade tsx a dependencies del package.json — en devDependencies no se instala en el build y el start muere en la primera línea.
El build falla con TSError: Unable to compile.
Comprueba que el tsconfig.json fue en el zip: sin él el compilador usa los valores por defecto y se queja de cosas que pasan en tu máquina. Corrige los errores de tipo antes de desplegar — el build no sube código que no compila.
¿Envío la carpeta dist o compilo en el servidor?
Los dos funcionan. Si envías dist listo, pon MAIN=dist/index.js y no excluyas la carpeta del zip. Si compilas en el servidor, deja que START llame a un script que ejecute tsc antes de arrancar el proceso.
Recibo Cannot find module de un paquete que existe en mi proyecto.
O el paquete está en devDependencies, o la ruta compilada no coincide con el alias del tsconfig. Mueve la dependencia de ejecución a dependencies; si usas paths, confirma que la salida compilada resuelve la ruta real.
¿Qué elimina la plataforma del zip antes del build?
node_modules, .npm, package-lock.json y .next salen del paquete. Las carpetas de salida, dist y build, no: se quedan a propósito, porque en muchos proyectos el MAIN apunta dentro de ellas.
Sube tu proyecto TypeScript hoy
Crea la cuenta, envía un zip o conecta el repositorio de GitHub y sigue la compilación desde la terminal del panel.
Crear cuenta