Le deploy Vercel est rouge — et maintenant ?
Un push sur main, la barre de progression Vercel qui tourne, puis le bandeau rouge : “Build Failed”. Ou pire : le build passe au vert, mais le site affiche une 404 sèche. Ces situations arrivent bien plus souvent qu’on ne le pense, même sur des projets soignés.
La bonne nouvelle : dans 90 % des cas, la cause est lisible dans les logs de build, et la correction prend moins de dix minutes. Ce guide parcourt les échecs les plus fréquents, dans l’ordre du plus simple au plus technique.
Pourquoi ça arrive : les vraies causes
Avant de fouiller les logs, voici les suspects habituels :
- Mauvaise version de Node.js — le projet tourne sur Node 18 en local, Vercel utilise Node 20 (ou 16) par défaut.
- Dépendances manquantes ou conflictuelles — un
package.jsonincomplet, unlockfiledésynchronisé, ou un package endevDependenciesalors qu’il est requis au build. - Variables d’environnement absentes — le code référence
process.env.NEXT_PUBLIC_API_URLmais la variable n’existe pas côté Vercel. - Output Directory incorrect — Vercel cherche le dossier
distou.nextlà où le framework produit autre chose. - Framework mal détecté — Vercel auto-détecte le framework ; si la détection rate, la commande de build est fausse.
- Erreurs TypeScript ou ESLint bloquantes — certains projets Next.js ont
"strict": trueet font échouer le build sur un simple warning. - Timeout de build — un build qui dépasse 45 minutes est tué automatiquement.
1. Lire les logs de build correctement
C’est le point de départ obligatoire. Beaucoup de développeurs voient “Build Failed” et tentent des correctifs à l’aveugle.
Où trouver les logs :
- Dashboard Vercel → ton projet → onglet Deployments.
- Clique sur le déploiement en échec (icône rouge).
- Onglet Build Logs — fais défiler jusqu’au bloc rouge, souvent précédé d’un
Error:ounpm ERR!.
Ce qu’il faut chercher :
- La dernière ligne avant l’erreur : c’est elle qui indique l’étape qui a planté.
- Les mentions
Cannot find module,ENOENT,SyntaxError,Type error— chacune pointe vers une cause précise. - Le code de sortie :
exit code 1= erreur applicative,exit code 127= commande introuvable.
2. Corriger la version de Node.js
Si les logs mentionnent une erreur de syntaxe sur du code pourtant valide, ou engine "node" is incompatible, le problème vient probablement de là.
Solution : déclare la version dans package.json :
"engines": {
"node": "20.x"
}
Ou dans le dashboard Vercel : Settings → General → Node.js Version — choisis la même version que ton environnement local (node -v).
3. Réparer les dépendances
Un npm install local ne suffit pas : Vercel exécute npm ci (ou yarn install --frozen-lockfile), qui est strict sur le lockfile.
Étapes :
- Supprime
node_moduleset ton lockfile en local. - Relance
npm install(ouyarn) pour régénérer un lockfile propre. - Committe et pousse
package-lock.jsonouyarn.lock. - Si un module est en
devDependenciesmais utilisé au build (ex : un loader Webpack, un plugin Babel), déplace-le dansdependencies.
Cas particulier des monorepos : si ton projet est dans un sous-dossier, configure Root Directory dans Vercel → Settings → General.
4. Ajouter les variables d’environnement manquantes
C’est la cause numéro un des builds qui passent en local mais échouent sur Vercel. Le code lit process.env.DATABASE_URL, la variable existe dans ton .env local (non commité, c’est normal), mais Vercel ne la connaît pas.
Solution :
- Vercel Dashboard → ton projet → Settings → Environment Variables.
- Ajoute chaque variable nécessaire, en précisant l’environnement : Production, Preview, Development.
- Pour les variables exposées côté client en Next.js, le nom doit commencer par
NEXT_PUBLIC_. - Après avoir ajouté des variables, relance un nouveau déploiement — les variables ne s’appliquent pas rétroactivement au build en cours.
Attention : ne committe jamais ton
.envdans le repo. Utilise.env.localpour le local, et les secrets Vercel pour la prod.
5. Corriger l’Output Directory et le Framework
Si le build passe mais que le site affiche une 404 générale, Vercel sert peut-être le mauvais dossier.
Vérification :
- Vercel Dashboard → Settings → Build & Development Settings.
- Vérifie que Framework Preset correspond à ton vrai framework (Next.js, Astro, Vite, SvelteKit…).
- Vérifie Output Directory : Next.js →
.next, Astro →dist, Vite →dist, Create React App →build.
Si tu as un script de build custom, désactive la détection automatique et renseigne manuellement la commande de build et le dossier de sortie.
Pour les projets Astro, l’article domaine perso sur Vercel/Netlify couvre les réglages DNS et SSL qui suivent naturellement une fois le build stabilisé.
6. Gérer les erreurs TypeScript et ESLint bloquantes
Next.js 13+ fait échouer le build par défaut sur les erreurs TypeScript. Si les logs affichent Type error: ..., deux options :
Option A (recommandée) — corriger l’erreur : c’est plus propre et évite d’accumuler de la dette.
Option B — désactiver temporairement : dans next.config.js :
module.exports = {
typescript: { ignoreBuildErrors: true },
eslint: { ignoreDuringBuilds: true },
}
À n’utiliser que pour débloquer un déploiement urgent, pas comme solution permanente.
7. 404 après un deploy réussi : domaine et routing
Le build est vert, l’URL *.vercel.app fonctionne, mais ton domaine custom retourne 404. Les causes possibles :
- Domaine non vérifié dans Vercel → Settings → Domains : un badge orange indique une vérification en attente. Ajoute l’enregistrement DNS demandé (CNAME ou A record) chez ton registrar.
- Mauvais projet lié — le domaine pointe vers un autre projet Vercel.
- Routing SPA manquant — pour une SPA Vite/React sans SSR, toutes les routes doivent être redirigées vers
index.html. Crée un fichiervercel.json:
{
"rewrites": [{ "source": "/(.*)", "destination": "/index.html" }]
}
Tableau récapitulatif
| Symptôme | Cause probable | Correctif |
|---|---|---|
engine "node" is incompatible | Mauvaise version Node | engines dans package.json ou Settings Vercel |
Cannot find module 'X' | Dépendance manquante / devDep | Déplacer en dependencies, repousser lockfile |
| Build local OK, Vercel KO | Variable d’env absente | Ajouter dans Settings → Environment Variables |
| Build vert, site 404 | Output Directory incorrect | Vérifier Framework Preset et dossier de sortie |
| Domaine custom 404 | DNS non propagé / domaine non vérifié | Vérifier enregistrement CNAME/A + badge Vercel |
Type error bloquant | TypeScript strict | Corriger l’erreur ou ignoreBuildErrors: true |
| Build tué après 45 min | Timeout | Optimiser le build, vérifier les boucles d’import |
Vercel dit "Build Succeeded" mais mon site affiche une page blanche — pourquoi ?
Une page blanche après un build réussi pointe vers une erreur JavaScript côté client. Ouvre la console du navigateur (F12) : tu verras probablement une erreur de module non trouvé ou une variable d’env undefined. Vérifie que toutes tes variables NEXT_PUBLIC_* sont bien renseignées dans Vercel et relance un déploiement.
Mes variables d'environnement sont bien renseignées mais le build les ignore quand même.
Après avoir ajouté ou modifié une variable dans le dashboard Vercel, le build en cours ne la prend pas en compte. Tu dois déclencher un nouveau déploiement manuellement (bouton Redeploy sur le dernier déploiement) pour que les nouvelles variables soient injectées.
Comment savoir quelle version de Node.js Vercel utilise par défaut ?
Vercel indique la version active dans Settings → General → Node.js Version. En 2026, la valeur par défaut est Node 20.x. Si ton projet a été créé il y a longtemps, il peut encore tourner sur Node 16 — vérifie et aligne avec ton environnement local.
Mon projet est un monorepo, le build ne trouve pas les fichiers — que faire ?
Dans Vercel → Settings → General, configure Root Directory avec le chemin vers le sous-dossier de ton application (ex : apps/web). Vercel lancera les commandes de build depuis ce dossier. Pense aussi à vérifier que les imports relatifs n’échappent pas à la racine du sous-projet.
Quand passer la main à un pro
Si après ces étapes les logs restent inexplicables — erreurs de compilation obscures, conflits de dépendances en cascade, configuration monorepo complexe — c’est le signe d’une dette technique qui dépasse un simple correctif. Un déploiement Vercel instable finit souvent par révéler des problèmes plus profonds : architecture de projet bancale, maintenance absente, ou stack choisie sans anticiper les contraintes de déploiement. Si tu choisis une stack moderne comme Next.js ou Astro, les performances et Core Web Vitals que tu vises ne se matérialiseront que si le pipeline de déploiement est fiable de bout en bout.
Un build qui plante à chaque release, c’est du temps perdu à chaque itération — et ça se chiffre vite.
Ce problème, Peechy s'en occupe
Plutôt que de tout gérer seul, confiez votre site à une agence qui s'occupe de tout — hébergement, sécurité, maintenance et corrections. Encore plus simple en abonnement : on règle les soucis avant même que vous les remarquiez.
Confier mon site à Peechy