NEXT_PUBLIC_*: خطأ Next.js الذي كلّفني نموذج تواصل في الإنتاج

العرض: في الإنتاج، كانت الواجهة الأمامية تستدعي… localhost:8080. وبالطبع، لا شيء يجيب. 🐛
السبب: متغيرات NEXT_PUBLIC_* لا تُقرأ عند تشغيل الحاوية، بل تُثبَّت داخل حزمة JavaScript لحظة البناء (build).
عمليًا:
- ❌ تعريف
NEXT_PUBLIC_API_URLفي ملف Kubernetes → فات الأوان، فالحزمة مُجمَّعة أصلًا بالقيمة الافتراضية. - ✅ تمرير المتغير كـ build-arg في Dockerfile، لحظة تنفيذ
next build.
الأمر منطقي عند التفكير فيه: هذا الكود يعمل في متصفح الزائر ولا يمكنه قراءة بيئة الخادم. لكن القادم من عالم PHP، حيث كل شيء يُقرأ وقت التشغيل، لا يملك هذا الانعكاس بشكل طبيعي.
الخلاصة: اختبروا دائمًا صورة الإنتاج محليًا قبل النشر، وليس فقط npm run dev. 😅


