Troubleshooting - Problèmes courants
Résolution des problèmes de déploiement et production.
Erreurs de build
Build échoue avec erreur TypeScript
error TS2305: Module 'X' has no exported member 'Y'Solutions :
- Vérifiez les imports
// ❌ Mauvais
import { User } from '@/types'
// âś… Bon
import type { User } from '@/types'- Réinstallez les dépendances
rm -rf node_modules pnpm-lock.yaml
pnpm install- Vérifiez tsconfig.json
Build échoue : “Cannot find module”
error: Cannot find module '@/components/Button'Solutions :
- Vérifiez l’existence du fichier
- Vérifiez le chemin (sensibilité à la casse)
- Vérifiez tsconfig.json compilerOptions.paths
{
"compilerOptions": {
"paths": {
"@/*": ["./src/*"] // Correct?
}
}
}Build échoue : “Out of memory”
JavaScript heap out of memorySolutions :
# Augmenter la mémoire
NODE_OPTIONS="--max-old-space-size=4096" pnpm build
# Ou nettoyez
rm -rf .next
pnpm buildErreurs à l’runtime
”Cannot access database”
Error: connect ECONNREFUSED 127.0.0.1:5432Solutions :
- Vérifiez DATABASE_URL
# Tester la connexion
psql postgresql://user:pass@host:5432/db-
Whitelist l’IP Vercel
- DB Provider (Render, Railway) → Security
- Ajouter l’IP Vercel
- Ou accepter tous les IPs (moins secure)
-
Vérifiez les credentials
DATABASE_URL="postgresql://user:PASSWORD@host:5432/db"
# ^^^^^^^^
# Correct?- Vérifiez le SSL
DATABASE_URL="postgresql://...?sslmode=require"”Stripe API error: Invalid API Key”
Error: Your API key is invalidSolutions :
- Vérifiez que la clé est en MODE LIVE
STRIPE_SECRET_KEY="sk_live_..." # Pas sk_test_!- Copiez correctement (pas d’espaces)
- Redéployez (les variables mettent du temps à s’appliquer)
“Cannot access session”
Error: Session is not availableSolutions :
- Vérifiez BETTER_AUTH_URL
BETTER_AUTH_URL="https://monsite.com" # Correct?
# Pas http://localhost:3000!- Vérifiez BETTER_AUTH_SECRET
BETTER_AUTH_SECRET="..." # Longue clé secrète?- Les cookies sont-ils activés?
”OAuth callback error”
The redirect_uri does not matchSolutions :
- Vérifiez la callback URL
GitHub OAuth : https://monsite.com/api/auth/callback/github
Google OAuth : https://monsite.com/api/auth/callback/google- Doit correspondre exactement au setting OAuth
- Mettez Ă jour si vous changez de domaine
Problèmes de performance
Site lent
Mesurez avec :
curl -w "@curl-format.txt" -o /dev/null -s https://monsite.comOu utilisez PageSpeed Insights
Response time > 5s
- Vérifiez les logs :
vercel logs --follow- Identifiez les requĂŞtes lentes
/api/slow-endpoint → 4000ms- Optimisez la requête
- Ajouter des indexes
- Vérifier la query N+1
- Cacher le résultat
Time out (>60s)
Vercel coupe Ă 60s en gratuit, 600s en pro
Solutions :
- Asynchrone/queue
// ❌ Mauvais
for (let i = 0; i < 1000; i++) {
await processItem(i) // 1000 * 100ms = 100s!
}
// âś… Bon
await Promise.all(
items.map(item => processItem(item)) // Parallèle
)-
Job queue (Bull, BullMQ)
-
Passer en Pro pour plus de temps
Erreurs utilisateur
404 sur images
image: https://monsite.com/images/test.jpg → 404Solutions :
- Image existe-t-elle?
- Chemins corrects?
- Vérifiez next.config.mjs
export default {
images: {
remotePatterns: [
{
protocol: 'https',
hostname: '*.vercel.app',
},
],
},
}CSS n’est pas chargé
Solutions :
- Vérifiez les imports CSS
// âś…
import './styles.css'
// Ou Tailwind
import 'tailwindcss/tailwind.css'- Vérifiez les chemins
- Cache du navigateur :
- Ctrl + Shift + Delete
- Cleared cache
JavaScript ne charge pas
Solutions :
- Vérifiez les erreurs navigateur (F12)
- Vérifiez la CDN/CSP
- Vercel → Logs
Erreurs de sécurité
”Refused to connect” (CSP)
Refused to load the script 'https://...' because it violates the Content Security Policy directiveSolutions :
- Vérifiez next.config.mjs pour CSP headers
- Whitelist les domaines autorisés
export default {
headers: async () => [
{
source: '/(.*)',
headers: [
{
key: 'Content-Security-Policy',
value: "script-src 'self' https://trusted.com",
},
],
},
],
}”Mixed content” (HTTPS + HTTP)
Mixed Content: The page was loaded over HTTPS, but requested an insecure resourceSolutions :
- Tous les liens doivent ĂŞtre HTTPS
- Pas de http:// en production
Erreurs de base de données
”Too many connections”
Error: remaining connection slots are reserved for non-replication superuser connectionsSolutions :
- Vérifiez les connexions ouvertes
- Utilisez connection pooling
# PgBouncer ou Prisma connection pooling
DATABASE_URL="postgresql://...?pgbouncer=true"- Réduire maxConnections en Prisma
datasource db {
provider = "postgresql"
url = env("DATABASE_URL")
// Réduire les connexions
extensions = [pgvector(map: "vector"), uuid_ossp(map: "uuid_ossp")]
}
// Dans generate
client {
maxConnections = 5
}”Syntax error” en Prisma
error: unknown field `unknownField` for model UserSolutions :
- Vérifiez le schéma Prisma
- Vérifiez que les migrations sont appliquées
DATABASE_URL="..." pnpm prisma migrate deployRollback
Si quelque chose va mal
# Vercel - voir deployments
vercel list # Liste des déploiements
# Rollback au précédent
vercel rollback
# Ou manuellement
git log --oneline | head -5
git revert <commit-hash>
git pushContacter le support
Vercel Support
- Forum : https://github.com/vercel/vercel/discussionsÂ
- Email : support@vercel.com
Stripe Support
- Dashboard : https://support.stripe.comÂ
- Chat : Dans le dashboard
Wagoo Support
- Dashboard → Create Ticket
- Voir Créer un ticket
Checklist de debug
- ✅ Vérifiez les logs
- âś… Testez localement
- ✅ Vérifiez les variables d’env
- ✅ Vérifiez les permissions BD
- âś… Videz le cache navigateur
- âś… Attendez la propagation DNS (max 24h)
- ✅ Redéployez si nécessaire
Prochaines étapes
→ Créez un ticket si le problème persiste
Last updated on