انتقل إلى المقال
Aniq-UI

3D 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: غالبًا تشغيل سابق للموقع، أو خادم تطوير لمشروع آخر.

  1. اعرف ما الذي يشغل المنفذ

    على macOS أو Linux:

    الطرفية
    lsof -i :3030

    على Windows، في PowerShell:

    الطرفية
    netstat -ano | findstr :3030
  2. أوقفه

    أغلق ذلك البرنامج، أو أوقف التشغيل السابق: Ctrl+C في طرفيته، أو docker stop مع اسم الحاوية أو معرّفها (يعرضها docker ps). ثم شغّل الموقع مرة أخرى.

  3. أو شغّل الموقع على منفذ آخر

    مع Docker، غيّر الرقم الموجود على يسار -p فقط؛ فالرقم الأيمن هو المنفذ داخل الحاوية ويبقى 3030:

    الطرفيةفي juicy
    docker run -p 3041:3030 juicy

    من دون Docker:

    الطرفيةفي juicy
    yarn dev -p 3041

    لبناء الإنتاج، yarn start -p 3041.

    النتيجة المتوقعة: يستجيب الموقع على localhost:3041محلي.

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 غير مُشغَّل.

  1. افتح Docker Desktop

    شغّل Docker Desktop وانتظر حتى يُظهر أن المحرك يعمل. على Linux، شغّل الخدمة: sudo systemctl start docker.

  2. تحقق من أن Docker يستجيب

    الطرفية
    docker info

    النتيجة المتوقعة: يطبع قسم Server بدلًا من رسالة خطأ.

  3. شغّل أمرك مرة أخرى

    docker build -t juicy .، ثم docker run -p 3030:3030 juicy.

فشل بناء Docker

يُنزّل البناء الأول صورة Node.js وكل الحزم، ثم يبني الموقع. ويتوقف برسالة "failed to solve" مع الخطوة التي فشلت عندما يعترضه شيء.

  • لا اتصال أو انتهت المهلة: يحتاج البناء إلى الإنترنت. شغّل الأمر مرة أخرى بعد عودة الاتصال؛ الخطوات المكتملة محفوظة في ذاكرة التخزين المؤقت.
  • لا توجد مساحة كافية على الجهاز (No space left on device): حرّر مساحة في Docker Desktop، أو تحقق مما يستخدمه Docker بالأمر docker system df.
  • يفشل عند `yarn build` بعد تعديل الشيفرة: الخطأ الظاهر فوق ذلك السطر يذكر اسم الملف. شغّل yarn typecheck من دون Docker لترى كل أخطاء الأنواع دفعة واحدة.
  • يفشل عند الخطوة نفسها في كل مرة: ابنِ مرة أخرى من دون ذاكرة التخزين المؤقت.
الطرفيةفي juicy
docker build --no-cache -t juicy .

يقول Yarn إن إصداره 1.22

ما تراه
This project's package.json defines "packageManager": "yarn@4…". 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.

لا تظهر العلب

ما تراه
Loading models...

تبقى الصفحة على مؤشر التحميل، أو تعرض الخلفية والنص من دون علب. لا تظهر العجلة إلا بعد تحميل العلبة الأولى وخريطة الإضاءة معًا، لذا يكفي فشل ملف واحد لإبقائها مخفية.

  • مسار نموذج خاطئ. ملف .glb الخاص بكل علبة مذكور في src/features/carousel/constants/juiceCans.ts ويُقدَّم من public/. والملف الذي غُيّر اسمه أو نُقل يُجيب بالخطأ 404.
  • خريطة الإضاءة مفقودة. هي الملف public/assets/hdri/forest_slope_1k.hdr، ويُذكر اسمه في src/features/carousel/constants/environment.ts. أبقِ الملف في مكانه، أو غيّر الاثنين معًا.
  • WebGL معطّل. فعّل تسريع العتاد في إعدادات المتصفح، أو جرّب متصفحًا آخر.

افتح أدوات المطور في المتصفح، ثم تبويب Network، وأعد تحميل الصفحة: الطلب الفاشل يذكر اسم الملف المفقود. كل ما تحمّله الصفحة موجود في المجلد، فلا تحتاج إلى أي خدمة خارجية.

لا يظهر تعديل

  • مع Docker: تحمل الصورة نسخة من الموقع كما كان عند بنائها. شغّل docker build -t juicy . مرة أخرى، ثم شغّل حاوية جديدة.
  • مع `yarn start`: شغّل yarn build مرة أخرى أولًا. وحده yarn dev يلتقط التعديلات تلقائيًا.
  • نموذج ثلاثي الأبعاد أو صورة جديدة تبدو قديمة: يحتفظ المتصفح بالملفات القادمة من public/. أعد التحميل من دون ذاكرة التخزين المؤقت (Ctrl+Shift+R، أو Cmd+Shift+R على Mac)، أو أعطِ الملف الجديد اسمًا جديدًا.

لا يقرأ الموقع أي متغيرات بيئة. إذا أضفت متغيرًا يبدأ اسمه بـ NEXT_PUBLIC_، فإن Next.js يكتب قيمته داخل الصفحة وقت البناء، لذا تحتاج القيمة الجديدة إلى بناء جديد أيضًا.

يظهر نص على شكل مفتاحه

ما تراه
juices.lemonGinger.name

تعرض الصفحة اسم النص بدلًا من النص نفسه، وتسجّل وحدة تحكم المتصفح MISSING_MESSAGE. المفتاح غير موجود في أحد ملفي الرسائل، وغالبًا بعد أن صار لنكهة معرّف جديد. أضفه إلى messages/en.json وmessages/ar.json كليهما، بالمسار نفسه في كل منهما.

الموقع لا يستجيب على خدمة استضافة

يستمع yarn start دائمًا على المنفذ 3030: يضبطه السكربت بـ -p 3030، وهو يتقدّم على المتغير PORT. فالمضيف الذي يعطي التطبيق منفذه الخاص في PORT لا يجد شيئًا هناك. أخبر المضيف أن التطبيق يستمع على 3030، أو استخدم هذا أمرًا للتشغيل:

الطرفية
yarn next start -p $PORT

توقفت عند خطوة؟

ابحث عن الحل قبل أن تبدأ من جديد.

حل المشكلات

تفضيلات ملفات تعريف الارتباط

نستخدم ملفات تعريف الارتباط لتعزيز تجربة التصفح الخاصة بك وتحليل حركة المرور على الموقع وتخصيص المحتوى. بالنقر على "قبول الكل"، فإنك توافق على استخدامنا لملفات تعريف الارتباط للتحليلات والإعلانات المخصصة.