حل المشكلات
الأخطاء التي قد تواجهها أثناء تثبيت صفحة الهبوط أو بنائها، وسبب كل منها، وطريقة حلها.
Docker لا يعمل
failed to connect to the docker API at unix:///…/docker.sock; check if the path is correct and if the daemon is runningتعرض إصدارات Docker الأقدم الرسالة "Cannot connect to the Docker daemon" بدلًا من ذلك. وفي الحالتين، محرك Docker غير مُشغَّل.
افتح Docker Desktop
شغّل Docker Desktop وانتظر حتى يُظهر أن المحرك يعمل. على Linux، شغّل الخدمة:
sudo systemctl start docker.تحقق من أن Docker يستجيب
الطرفيةdocker infoالنتيجة المتوقعة: يطبع قسم Server بدلًا من رسالة خطأ.
شغّل أمرك مجددًا
docker build -t saas-landing .، ثمdocker run -p 3030:3030 saas-landing.
المنفذ مستخدم بالفعل
ports are not available: exposing port TCP 0.0.0.0:3030 … bind: address already in use
Error: listen EADDRINUSE: address already in use :::3030السطر الأول من Docker، والثاني من yarn dev أو yarn start. هناك برنامج آخر يستمع بالفعل على المنفذ 3030: غالبًا تشغيل سابق لهذا الموقع، أو خادم تطوير لمشروع آخر.
اعرف ما الذي يشغل المنفذ
على macOS أو Linux:
الطرفيةlsof -i :3030على Windows، في PowerShell:
الطرفيةnetstat -ano | findstr :3030أوقفه
أغلق ذلك البرنامج، أو أوقف التشغيل السابق: Ctrl+C في طرفيته، أو
docker stopمع معرّف الحاوية منdocker ps. ثم شغّل الموقع مرة أخرى.أو استخدم منفذًا آخر
أبقِ البرنامج الآخر وشغّل الموقع على منفذ متاح، هنا
3041:طريقة التشغيل الأمر Docker docker run -p 3041:3030 saas-landingخادم التطوير yarn dev -p 3041بناء الإنتاج yarn start -p 3041مع Docker، غيّر الرقم الأول بعد
-pفقط: الموقع داخل الحاوية يستمع دائمًا على3030.النتيجة المتوقعة: يستجيب الموقع على localhost:3041محلي.
فشل البناء
يتوقف docker build بالرسالة "failed to solve" مع الخطوة التي فشلت؛ ويتوقف yarn build مع الخطأ نفسه. الأسباب المعتادة:
- لا اتصال أو انتهت المهلة: ينزّل البناء الاعتماديات، وينزّل
next buildخطَّي Inter و Noto Sans Arabic من Google Fonts. تعني الرسالة "Failed to fetchInterfrom Google Fonts" أن البناء لم يتمكن من الوصول إليهما. شغّل الأمر مجددًا بعد عودة الاتصال؛ ومع Docker، الخطوات المكتملة محفوظة في ذاكرة التخزين المؤقت. - `Invalid URL`: قيمة
NEXT_PUBLIC_SITE_URLليست عنوانًا كاملًا. اكتبها معhttps://، مثلhttps://www.your-domain.com. - لا توجد مساحة كافية على الجهاز (No space left on device): حرّر مساحة في Docker Desktop، أو تحقق مما يستخدمه Docker بالأمر
docker system df. - يفشل عند الخطوة نفسها في كل مرة: أعد البناء من دون ذاكرة التخزين المؤقت.
landing-page-template-2docker build --no-cache -t saas-landing .من دون Docker، احذف المجلدين node_modules و.next، ثم شغّل yarn install وyarn build مجددًا.
يقول Yarn إن إصداره 1.22
This project's package.json defines "packageManager": "yarn@4.8.1…". However the current global version of Yarn is 1.22…يثبّت المشروع Yarn 4 عبر Corepack. تعني هذه الرسالة أن Corepack غير مفعّل بعد، فأجاب Yarn القديم المثبّت عامًّا بدلًا منه.
corepack enableثم شغّل yarn install مرة أخرى. إذا لم يكن مع Node.js لديك Corepack، فثبّته أولًا بالأمر npm install -g corepack. وإذا لم يُعثر على yarn إطلاقًا، فالأمر نفسه يحل المشكلة.
تغيير الإعداد لا يُحدث أي أثر
تُضمَّن قيمتا NEXT_PUBLIC_SITE_URL وNEXT_PUBLIC_API_BASE_URL في الصفحة عند بنائها. تغييرهما لا يغيّر شيئًا حتى يُبنى الموقع مجددًا.
| طريقة التشغيل | بعد تغيير قيمة |
|---|---|
yarn dev | غيّره في .env.local، وأوقف الخادم، ثم شغّل yarn dev مجددًا. |
yarn build وyarn start | غيّره في .env.local، وشغّل yarn build مجددًا، ثم yarn start. |
| Docker | ابنِ الصورة مجددًا مع القيمة كوسيط --build-arg. يتجاهل بناء الصورة .env و.env.local. |
| Vercel | غيّره في Environment Variables الخاصة بالمشروع وانشر مجددًا. |
بعض الصور مفقودة
- صور آراء العملاء وصور بطاقات المدونة فارغة: تُحمَّل من
images.unsplash.com، لذا تحتاج إلى اتصال بالإنترنت، على الجهاز الذي يقدّم الموقع أيضًا. كل الصور الأخرى موجودة فيpublic/. - رسالة خطأ تقول إن اسم المضيف "is not configured under images in your `next.config.js`": استخدمت صورة من موقع غير مسموح به بعد. أضف مضيفه إلى
images.remotePatternsفيnext.config.js، أو انسخ الصورة إلىpublic/. - صورة جديدة في `public/` لا تظهر: يبدأ مسارها في الكود من جذر الموقع، من دون
public، مثل/images/your-photo.jpg. مع Docker، ابنِ صورة Docker مجددًا.
نموذج النشرة البريدية لا يعرض إلا رسالة الخطأ
قسم النشرة البريدية غير موجود على الصفحة افتراضيًا. بعد أن تضيفه، يعرض النموذج رسالة الخطأ عندما:
- تكون قيمة
NEXT_PUBLIC_API_BASE_URLفارغة. لا يرسل النموذج شيئًا حتى تضبطها ويُبنى الموقع مجددًا. - تُجيب واجهة API الخاصة بك بخطأ، أو لا تُجيب على
<NEXT_PUBLIC_API_BASE_URL>/newsletter/subscribe. - لا تسمح واجهة API الخاصة بك بعنوان الموقع في إعدادات CORS. عندها تعرض وحدة تحكم المتصفح خطأ CORS.
الصفحة تُفتح بالعربية
فتح / يرسل الزائر إلى /ar عندما يفضّل المتصفح العربية، وإلى /en في غير ذلك. اضغط زر اللغة في الترويسة، أو افتح /en مباشرة. لتبدأ دائمًا بالإنجليزية، أيًّا كانت لغة المتصفح المفضلة، أضف localeDetection: false بجوار locales في src/i18n/routing.ts.
زر أو رابط لا يفعل شيئًا
تشير روابط القائمة والتذييل إلى #، وأزرار «ابدأ الآن» و«ابدأ تجربة مجانية» و«احجز عرضًا توضيحيًا» وأزرار الأسعار ليس لها وجهة بعد. هذا مقصود: وجّهها أنت إلى صفحة التسجيل، أو التوثيق، أو صفحة التواصل الخاصة بك.
المجلد يبدو مختلفًا
شغّل الأوامر داخل المجلد الذي يُستخرج إليه ملف ZIP، أي landing-page-template-2. يحتوي على Dockerfile وpackage.json وyarn.lock وmessages وpublic وsrc. إذا لم يكن الأمر unzip متوفرًا، فاستخرجه بمدير الملفات بدلًا من ذلك؛ تضيف بعض الأدوات مجلدًا إضافيًا يحمل اسم ملف ZIP، فانتقل إلى المجلد الداخلي.