حل المشكلات
الأخطاء التي قد تواجهها أثناء تثبيت الموقع وتعديله، وسبب كل منها، وطريقة إصلاحها.
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 company-site .، ثمdocker run -p 3030:3030 company-site.
المنفذ مستخدم بالفعل
Bind for 0.0.0.0:3030 failed: port is already allocated
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 run. ثم شغّل الموقع من جديد.أو شغّل الموقع على منفذ آخر
مع Docker، أبقِ
3030على يمين-pوغيّر الرقم على اليسار:الطرفيةفيlanding-page-template-3docker run -p 3041:3030 company-siteمن دون Docker، أعطِ Yarn المنفذ، أو استخدم
yarn start -p 3041لنسخة الإنتاج:الطرفيةفيlanding-page-template-3yarn dev -p 3041النتيجة المتوقعة: يستجيب الموقع على منفذه الجديد، وهنا localhost:3041محلي.
فشل البناء
ينزّل أول بناء في Docker الصورة الأساسية وكل الاعتماديات، ثم يبني الموقع. ويتوقف برسالة "failed to solve" مع الخطوة التي فشلت عندما يعترضه شيء.
- لا اتصال أو انتهت المهلة: يحتاج البناء إلى الإنترنت، للاعتماديات وللخطّين Inter وNoto Sans Arabic اللذين ينزّلهما
next/font. شغّل الأمر من جديد عند عودة الاتصال؛ فالخطوات المكتملة محفوظة. - رسالة تقول إن خطًا تعذّر جلبه من Google Fonts: السبب نفسه، ويحدث أيضًا مع
yarn build. تأكد أنfonts.googleapis.comمتاح من شبكتك. - لا توجد مساحة كافية على الجهاز (No space left on device): حرّر مساحة في Docker Desktop، أو تحقق مما يستخدمه Docker بالأمر
docker system df. - يفشل عند الخطوة نفسها في كل مرة: أعد البناء من دون ذاكرة التخزين المؤقت.
landing-page-template-3docker build --no-cache -t company-site .إذا توقف yarn build بخطأ في الأنواع أو في الفحص بعد تعديلاتك، فإن yarn typecheck وyarn lint يعرضان الملف والسطر.
يقول Yarn إن إصداره 1.22
This project's package.json defines "packageManager": "yarn@4…". However the current global version of Yarn is 1.22…يثبّت المجلد Yarn 4 في package.json عبر Corepack. تعني هذه الرسالة أن Corepack غير مفعّل بعد، فاستجاب Yarn القديم المثبت على مستوى النظام بدلًا منه.
corepack enableثم شغّل yarn install مرة أخرى. إذا لم يكن مع Node.js لديك Corepack، فثبّته أولًا بالأمر npm install -g corepack.
تغيير عنوان الموقع لا يغيّر شيئًا
تُدمج قيمة NEXT_PUBLIC_SITE_URL في البناء. تغيير .env لا يغيّر شيئًا حتى يُبنى الموقع من جديد.
| طريقة التشغيل | بعد تغيير القيمة |
|---|---|
yarn dev | أوقفه وشغّل yarn dev مجددًا. |
yarn build وyarn start | شغّل yarn build مجددًا، ثم yarn start. |
docker build | أعد بناء الصورة مع القيمة كوسيط --build-arg. لا يقرأ Docker الملف .env. |
| Vercel | غيّره في متغيرات البيئة (Environment Variables) في المشروع، ثم أعد النشر. |
بعض الصور أو الشعارات لا تظهر
تُحمَّل الصور الشخصية وصور المدونة والمزايا من images.unsplash.com، ومعظم الشعارات من cdn.simpleicons.org. من دون اتصال بالإنترنت، أو على شبكة تحجب هذين المضيفين، تبقى فارغة.
الصورة التي تشير بها إلى موقع آخر تحتاج إلى إضافة مضيفها في images.remotePatterns داخل next.config.mjs، ثم إعادة تشغيل yarn dev أو بناء جديد. إذا توقف Simple Icons عن تقديم علامة تجارية، فاحفظ شعارها في public/images/logos/ وأشر إلى ذلك الملف، كما تفعل الشيفرة بالفعل مع Slack وSalesforce.
زر أو رابط لا يفعل شيئًا
هكذا يأتي المحتوى التجريبي: الأزرار بلا وجهة، ومعظم الروابط تشير إلى #. أعطِ كلًا منها عنوانه قبل النشر.
عنوان يعرض صفحة 404
للموقع صفحة واحدة بلغتين: /en و/ar. أي عنوان آخر يُرجع 404 حتى تضيف تلك اللغة أو تلك الصفحة.
المجلد يبدو مختلفًا
شغّل الأوامر داخل المجلد الذي يُستخرج إليه ملف ZIP. إذا لم يكن الأمر unzip متوفرًا، فاستخرجه بمدير الملفات بدلًا من ذلك؛ تضيف بعض الأدوات مجلدًا إضافيًا يحمل اسم ملف ZIP، فانتقل إلى المجلد الداخلي.
المجلد الصحيح هو landing-page-template-3، وفي أعلاه Dockerfile وpackage.json وmessages وpublic وsrc.