Aller au contenu principal

NEXT_PUBLIC_* : l'erreur Next.js qui m'a coûté un formulaire de contact en prod

Next.js
NEXT_PUBLIC_* : l'erreur Next.js qui m'a coûté un formulaire de contact en prod

Symptôme : en production, le frontend appelait… localhost:8080. Évidemment, ça ne répondait pas. 🐛

La cause : les variables NEXT_PUBLIC_* ne sont pas lues au démarrage du conteneur. Elles sont figées dans le bundle JavaScript au moment du build.

Concrètement :

  • ❌ Définir NEXT_PUBLIC_API_URL dans le manifest Kubernetes → trop tard, le bundle est déjà compilé avec la valeur par défaut.
  • ✅ Passer la variable en build-arg dans le Dockerfile, au moment du next build.

C'est logique quand on y pense : ce code s'exécute dans le navigateur du visiteur, il ne peut pas lire l'environnement du serveur. Mais quand on vient du monde PHP où tout est lu au runtime, le réflexe n'est pas naturel.

Moralité : testez toujours votre image de prod en local avant de déployer, pas seulement npm run dev. 😅

Voir le post original sur LinkedIn