Error de deploy en Vercel: 5 causas y cómo arreglarlas
En pocas palabras: Una app de Next.js anda en local y falla en Vercel por cinco causas: variables de entorno faltantes, mayúsculas distintas en imports, paquetes de Node en Edge, lockfile desfasado y Prisma sin generar. Lo detalló jonjys en dev.to el 9 de octubre de 2026.
Un error de deploy en Vercel en una app de Next.js que anda bien en tu máquina casi siempre sale de cinco causas: variables de entorno que faltan, imports con mayúsculas distintas, paquetes de Node en Edge, lockfile desincronizado y Prisma sin cliente generado.
Un error de deploy en Vercel es una falla de build o de ejecución que no se reproduce en tu entorno local, porque Vercel compila en Linux, instala dependencias con lockfile congelado y toma las variables de entorno de su propio proyecto. Un autor que firma como jonjys en dev.to publicó el 9 de octubre de 2026 las cinco causas que más ve, cada una con su arreglo.
En este artículo:
- En 30 segundos
- ¿Por qué falla el deploy en Vercel si tengo las variables en .env.local?
- ¿Por qué un import funciona en macOS o Windows y falla en Vercel?
- ¿Qué paquetes de Node no funcionan en el Edge runtime de Next.js?
- ¿Qué significa ERR_PNPM_OUTDATED_LOCKFILE y cómo se arregla?
- ¿Por qué Prisma no encuentra el cliente al hacer deploy en Vercel?
- ¿Cómo se resumen las cinco causas del deploy fallido?
- ¿Cómo reviso un error de deploy en Vercel antes de hacer push?
- Qué está confirmado y qué no
- Errores comunes al arreglar un deploy fallido
- Preguntas Frecuentes
- Conclusión
- Fuentes
En 30 segundos
- Son cinco causas: variables de entorno, mayúsculas en imports, paquetes de Node en Edge, lockfile desfasado y Prisma sin generar.
- Preview es el entorno de Vercel que más se olvida al cargar variables.
- Un archivo
header.tsximportado comoHeaderanda en macOS y Windows, pero rompe en Linux. - Para Prisma, el arreglo es agregar
prisma generateal scriptpostinstall. - DeployDoctor, la herramienta del autor, es gratis para repos públicos con tres escaneos por día. Nadie la verificó de forma independiente.
¿Por qué falla el deploy en Vercel si tengo las variables en .env.local?
Falla porque tu .env.local vive en tu máquina y cada variable tiene que cargarse también en el proyecto de Vercel. Según la fuente, el caso típico es código que lee process.env.STRIPE_SECRET_KEY, un .env.local que la tiene y un proyecto de Vercel que no.
El error suele apuntar a otro lado.
Ponele que el build revienta adentro del SDK de Stripe con un mensaje que no nombra ninguna variable, vos sospechás de la versión del SDK, revisás el código, probás otra versión, y recién una hora después te acordás de que la clave nunca se cargó en Vercel (ejemplo hipotético, pero cualquiera que haya deployado algo con pagos se topó con algo parecido).
- Commiteá un .env.example con todos los nombres de variables y valores vacíos.
- Revisá cada nombre en cada entorno desde la configuración del proyecto en Vercel. Preview es el scope que la gente olvida.
- Mirá el .gitignore. Una regla como
.env*esconde también.env.example. Agregá!.env.exampleal final.
¿Por qué un import funciona en macOS o Windows y falla en Vercel?
Porque macOS y Windows ignoran mayúsculas y minúsculas en los nombres de archivo, y Vercel compila en Linux, que no las ignora. Un import Header from './components/Header' funciona en tu máquina aunque el archivo se llame header.tsx. En el build de Vercel, no. Relacionado: desplegar un proyecto React con Vite.
La solución es igualar el nombre exacto. Para renombrar solo por mayúsculas, usá git mv header.tsx Header.tsx; si lo hacés desde el explorador, git puede no detectar el cambio y el repo queda con el nombre viejo.
¿Qué paquetes de Node no funcionan en el Edge runtime de Next.js?
Según la fuente, fs, net, pg e ioredis no pueden correr en el Edge runtime. El bundler sigue todos los imports estáticos, incluidos los del middleware.
Mi lectura: alcanza con que un helper que importa pg cuelgue del middleware para que el build falle, aunque vos nunca lo llames en Edge. Hay dos salidas. Poné export const runtime = 'nodejs' en esa ruta, o cambiá a un cliente basado en HTTP como @upstash/redis. Ojo: la lista de la fuente es un ejemplo, no un listado completo, así que contrastala con la documentación oficial de Next.js y Vercel. Lo explicamos a fondo en nuestra guía para publicar tu web gratis en Vercel.
¿Qué significa ERR_PNPM_OUTDATED_LOCKFILE y cómo se arregla?
Significa que el lockfile no coincide con el package.json y la instalación congelada se corta. La fuente aclara que una dependencia fijada en latest nunca se puede satisfacer con un lockfile congelado. Con npm aparece el error equivalente.
El arreglo tiene tres pasos: fijá versiones reales, regenerá el lockfile con la misma versión del gestor de paquetes que usa Vercel y commitealo. Apagar el frozen lockfile “soluciona” el síntoma y deja el desfase escondido.
¿Por qué Prisma no encuentra el cliente al hacer deploy en Vercel?
Porque el cliente generado está en el .gitignore y nada corre el generador durante la instalación, así que el build importa algo que no existe. Agregá prisma generate al script postinstall del package.json y el cliente se genera en cada install. Para más detalles, mirá nuestra comparación entre Vercel y AWS Amplify.
¿Cómo se resumen las cinco causas del deploy fallido?
| Causa | Qué pasa | Arreglo según la fuente |
|---|---|---|
| Variables de entorno | Existen en .env.local, no en el proyecto de Vercel | .env.example commiteado y revisión de cada entorno, Preview incluido |
| Mayúsculas en imports | macOS y Windows las ignoran, Linux no | Igualar el nombre y usar git mv |
| Node en Edge | fs, net, pg, ioredis no corren en Edge | runtime = 'nodejs' o cliente HTTP |
| Lockfile desfasado | ERR_PNPM_OUTDATED_LOCKFILE o su equivalente en npm | Versiones fijas y lockfile regenerado y commiteado |
| Prisma sin cliente | El cliente generado no está en el repo | prisma generate en postinstall |

¿Cómo reviso un error de deploy en Vercel antes de hacer push?
Corré el build en un Linux limpio, sin tu .env.local, antes de empujar el commit. Esto es una propuesta editorial nuestra: no viene de la fuente y no la probamos.
- Clonado limpio en Linux. Un contenedor o un VPS (por ejemplo, uno de donweb.com) sirve para reproducir el entorno donde compila Vercel.
- Solo las variables del .env.example. Si el build rompe, te falta documentar una variable.
- Instalación congelada. Usá
pnpm install --frozen-lockfileonpm ci, y después el build.
Ahora bien, qué no permiten concluir estos datos. El autor dice que la mayoría de los deploys fallidos que revisó vienen de estas cinco causas, pero no publica cifras ni muestra. Es experiencia personal, no un estudio, y no hay forma de saber qué porcentaje de fallos cubre la lista.
Qué está confirmado y qué no
Lo que la fuente afirma, y por eso lo damos como dicho por el autor:
- Las cinco causas y sus arreglos son los descritos arriba.
- DeployDoctor lee un repo público de GitHub vía API, sin clonar ni ejecutar código, y además de las cinco causas revisa secretos hardcodeados, configuración de build y setup de Supabase.
- El costo es gratis para repos públicos, con tres escaneos por día. Hay también una GitHub Action que corre los mismos chequeos antes del build de Vercel, gratis en repos públicos y sin token.
Lo que no está confirmado: la efectividad de DeployDoctor y de la Action, porque es una herramienta del propio autor. ¿Alguien la contrastó de forma independiente? En las fuentes que tenemos, no. Tampoco hay datos de falsos positivos. Si la usás, tomala con pinzas y comparala con tu propio build. Complementá con un error 500 con el build en verde.
Si querés profundizar en esto, tenemos un artículo sobre errores de deploy en Vercel y cómo resolverlos en proyectos con Django y React.
Errores comunes al arreglar un deploy fallido
- Cargar la variable solo en Production. El deploy de Preview sigue roto. Revisá todos los entornos.
- Dejar dependencias en latest. Un lockfile congelado nunca las puede satisfacer. Fijá versiones reales.
- Apagar el frozen lockfile para que pase el build. El desfase sigue ahí y reaparece en el próximo cambio de dependencias.
- Renombrar archivos por mayúsculas sin git mv. En tu máquina anda, en el repo no cambió nada.
Preguntas Frecuentes
¿Cómo configuro las variables de entorno en Vercel para Preview?
Cargá cada variable en la configuración del proyecto de Vercel y confirmá que esté marcada también para el entorno Preview. Según la fuente, Preview es el scope que más se olvida. Ayuda tener un .env.example commiteado como lista de control.
¿Por qué un import con mayúsculas funciona en Windows o macOS pero rompe en Vercel?
Vercel compila en Linux, que distingue mayúsculas y minúsculas, mientras que Windows y macOS no. Igualá el import con el nombre real del archivo y, si renombrás, usá git mv.
¿Qué significa ERR_PNPM_OUTDATED_LOCKFILE en Vercel?
Es el error de pnpm cuando el lockfile no coincide con el package.json y la instalación está congelada. Regenerá el lockfile con la misma versión del gestor que usa Vercel, fijá versiones reales y commitealo.
¿Por qué Prisma no encuentra el cliente al hacer deploy en Vercel?
El cliente generado está en el .gitignore y ningún paso lo genera durante la instalación. Agregá prisma generate al script postinstall del package.json.
Conclusión
La lista no trae nada exótico, y ahí está su valor: son errores que se repiten porque tu máquina los tapa. Lo que te conviene hacer es dejar de descubrirlos de a uno por deploy fallido. Armá el .env.example, revisá el lockfile, agregá postinstall si usás Prisma y corré un build en Linux limpio antes de empujar.
Sobre DeployDoctor, probalo si querés un chequeo automático, pero recordá que es del autor del artículo y que la evidencia independiente todavía no existe.






