reactjs - نطاقات الاستضافة الافتراضية لفايربيز: يعمل فقط .firebaseapp.com لكن .web.app يفشل


أنا أبني تطبيق React بسيط من صفحة واحدة باستخدام TypeScript. حاولت استضافته باستخدام Firebase Hosting. ومن المدهش، أن النطاق [name].firebaseapp.com فقط هو الذي يعمل بينما [name].web.app يعرض صفحة "الموقع غير موجود" الافتراضية:

صورة الموقع غير موجود

أنا أستخدم إعدادات Firebase الأساسية (الإعداد الافتراضي الذي تحصل عليه عند استخدام firebase init):

{
  "hosting": {
    "public": "build",
    "ignore": [
      "firebase.json",
      "**/.*",
      "**/node_modules/**"
    ]
  }
}

أتلقى رسالة "الموقع غير موجود" عندما أذهب إلى [name].web.app. كنت سأشتبه في وجود مشكلة في index.html، أو عمليات إعادة الكتابة، أو مجلد البناء، وما إلى ذلك... لكن بعد ذلك، لماذا أرى الصفحة تعمل بشكل طبيعي على [name].firebaseapp.com ومستضافة بشكل جيد كما يجب؟

هناك بعض الأشياء التي أشك فيها:

  • اسم النطاق غير متاح من خلال Firebase نفسه (على الرغم من، لماذا ستسمي Firebase النطاق بشيء غير صالح إذا كان هذا هو الحال عند إنشاء المشروع)
  • يتم دفع الملفات إلى نطاق [name].firebaseapp.com فقط (في هذه الحالة، كيف يمكنك التحكم في ذلك؟)

الإجابة رقم 1

حدثت لي نفس المشكلة الغريبة في عطلة نهاية الأسبوع هذه. الأعراض بالضبط:

  • قبل أي عمليات نشر، فتحت example.web.app لكن لم أفتح example.firebaseapp.com
  • بعد النشر الأول، يعرض example.web.app "الموقع غير موجود" ولكن example.firebaseapp.com يعمل كما هو متوقع. ونتيجة لذلك، يظهر نطاق العميل الخاص بي أيضًا "الموقع غير موجود".

وفقًا لأحد الاقتراحات من الدعم، تم الإصلاح الآن بهذه الأوامر:

curl -X PURGE https://your.notworking.url

بالنسبة لحالتي، كان الأمر مجرد example.web.app ونطاقي المخصص. لذلك تم الإصلاح في 20 ثانية.


اقتراحات لم تنجح:

  • التلاعب بالمتصفح (مسح ذاكرة التخزين المؤقت للمتصفح، الوضع الخفي، إلخ)
  • إعادة النشر

شرح:

تم تخزين شيء 'الموقع غير موجود' مؤقتًا على خادم CDN الخاص بهم. لذا من الطبيعي أن مسح ذاكرة التخزين المؤقت للمتصفح المحلي لم ينجح. ومن الغريب أن إعادة النشر أيضًا لم تنجح.

ملاحظة مفيدة أخرى هي، في الاستجابة هناك ترويسة x-served-by، والتي تخبرك بخادم CDN الذي تم تخزين تطبيقك على الويب فيه مؤقتًا.

شكر خاص لـ هوجو فاريل من دعم فایربیس.

الإجابة رقم 2

تحديث:

أرسلت بريدًا إلكترونيًا إلى دعم العملاء في Firebase، وفي اليوم التالي كان النطاق يعمل بشكل طبيعي. لم يتم تقديم أي شرح عن سبب حدوث المشكلة، لكن مراسلتهم بالبريد الإلكتروني حلتها.