تقدّم هذه الصفحة إجابات عن الأسئلة الشائعة حول
App Hosting.
الأسئلة الشائعة حول App Hosting
هل تتيح خدمة App Hosting استخدام أُطر عمل أخرى غير Next.js وAngular؟
App Hosting توفّر إمكانية إنشاء التطبيقات ونشرها بشكل مسبق الإعداد باستخدام
Next.js وAngular، وقد التزمنا بفهم
أُطر العمل هذه وتفسير إعداداتها الأصلية. بالنسبة إلى عدد من
أُطر العمل الأخرى، يتيح مجتمع المطوّرين استخدام App Hosting
محوّلات أُطر العمل. بالإضافة إلى ذلك، ستحاول خدمة "استضافة التطبيقات" إنشاء أي تطبيق Node.js
يتضمّن نصًا للإنشاء والبدء، App Hosting
ولكن لا يمكنها ضمان نجاح هذه العملية بشكل موثوق. الاطّلاع على مقالة دمج أُطر العمل.
ما هي المناطق التي تتيح فيها خدمة Firebase App Hosting؟
من المرجّح أن تتوسّع مناطق خدمة App Hosting بمرور الوقت. للاطّلاع على أحدث المعلومات، يُرجى مراجعة مقالة
App Hosting مواقع.
هل يمكنني استخدام GitLab أو غيره من مزوّدي Git بالإضافة إلى GitHub لعمليات النشر؟
لا يمكنك ذلك حاليًا، ولكنّ إتاحة استخدام مزوّدين آخرين مدرَجة في خارطة الطريق الطويلة الأجل لخدمة App Hosting.
لماذا لا يمكنني العثور على مستودعي في واجهة مستخدم Firebase console؟
إذا لم يظهر المستودع في قائمة الخيارات عند إنشاء واجهة خلفية جديدة في Firebase Console، جرِّب أولاً النقر على إعادة تحميل القائمة. إذا كان المستودع المفضّل لا يزال غير
متاح، قد تحتاج إلى إضافته باستخدام خيار منح إذن الوصول إلى
مستودع جديد في GitHub.
بالإضافة إلى ذلك، يمكنك إدارة المستودعات باستخدام تطبيق GitHub Firebase App Hosting. لإجراء ذلك، انتقِل إلى ملفك الشخصي على GitHub، ثم انقر على
الإعدادات وبعدها على التطبيقات. في صف جدول تطبيق Firebase App Hosting، انقر على ضبط لإدارة المستودعات.
لماذا لا يظهر موقعي الإلكتروني بشكل طبيعي في WebView لتطبيق Android على الأجهزة الجوّالة؟
قد تلاحظ التطبيقات التي ضبطت نطاقًا مخصّصًا باستخدام Firebase console
قبل الربع الثالث من عام 2025 أنّ الموقع الإلكتروني لا يظهر بشكل صحيح في Android
WebView. يحدث ذلك لأنّ سجلّات CNAME المستخدَمة خلال تلك الفترة لم تكن
متوافقة مع Android WebView.
لحَلّ هذه المشكلة، عليك إزالة النطاق المخصّص من الواجهة الخلفية لـ App Hosting
وإعادة إضافته. ستوفّر واجهة مستخدم وحدة التحكّم المعدَّلة 3 سجلّات جديدة، وهي سجلّ A
وسجلّ TXT للنطاق، وسجلّ CNAME للنطاق الفرعي لتحدّي ACME
(للشهادات)، لذا استخدِم هذه السجلّات بدلاً من سجلّ CNAME
السابق.
كيف يمكنني تغيير المستودع المرتبط بمشروع App Hosting؟
لا يمكن حاليًا تغيير المستودع. ومع ذلك، يمكنك
إنشاء واجهة خلفية جديدة مرتبطة بالمستودع المفضّل ضمن المشروع نفسه
، أو إنشاء واجهة خلفية جديدة في مشروع منفصل.
تعتمد العناوين على إطار العمل. عليك اتّباع الخطوات التي تتّبعها عادةً لـ
إطار العمل.
هل يتوفّر محاكي للتطوير المحلي باستخدام App Hosting؟
نعم، يمكنك إجراء اختبارات محلية لتطبيقك قبل App Hosting
نشره باستخدام المحاكي App Hosting، وهو جزء من حزمة المحاكيات المحلية من Firebase. الاطّلاع على مقالة اختبار عملية نشر تطبيقك محليًا
لماذا تظهر لي أخطاء في App Hosting ولكن ليس في Cloud Build؟
في مثل هذه الحالات، من المحتمل أنّ الخطأ قد يكون ناتجًا عن Cloud Run.
تحقَّق من حالة عملية الإطلاق للتأكّد من ذلك.
كيف يمكنني تغيير حساب GitHub مرتبط أو إزالته؟
لإزالة حساب GitHub المرتبط، افتح Developer
Connect، وتأكَّد من اختيار مشروعك، ثم احذف عملية الربط
firebase-app-hosting-github-oath وعملية الربط
التي تبدأ بـ apphosting-github-conn-. عند فتح App Hosting في Firebase console، من المفترض أن تتمكّن الآن من إعداد عملية ربط جديدة بحساب GitHub.
كيف يمكنني ضبط ملفات تعريف الارتباط لموقعي الإلكتروني على خدمة App Hosting؟
على الرغم من أنّ عنوان استجابة HTTP
Set-Cookie لم يكن متاحًا عند إطلاق الإصدار الأولي من App Hosting، فإنّه يعمل الآن على النحو المتوقّع.
المشاكل العامة في خدمة "App Hosting" وتحديد المشاكل وحلّها
- بسبب مشكلة في Cloud Run البنية الأساسية، قد يكون
إنشاء الموارد أو تعديلها أبطأ من
المتوقّع في بعض المناطق، مثل
us-central1.
إذا كانت مدة تأخير النشر تمثّل مشكلة في منطقة معيّنة، تنصح Google بالنشر في منطقة أخرى.
- لا يمكن لشبكة توصيل المحتوى (CDN) في خدمة App Hosting تضمين سوى مجموعة معيّنة من عناوين طلبات HTTP في
مفاتيح ذاكرة التخزين المؤقت. تتضمّن هذه القائمة العناوين
RSC وNext-Router-State-Tree
Next-Router-Prefetch وNext-Router-Segment-Prefetch وNext-Url
في NextJS، بالإضافة إلى العناوين العادية في Cloud CDN، وهي Accept وAccept-Encoding
Access-Control-Request-Headers وAccess-Control-Request-Method وOrigin
Sec-Fetch-Dest وSec-Fetch-Mode وSec-Fetch-Site
X-Goog-Allowed-Resources وX-Origin. إذا كانت الاستجابة تتضمّن عنوان Vary بقيمة غير مدرَجة هنا، لن تخزّن شبكة توصيل المحتوى (CDN) هذه الاستجابة مؤقتًا.
- يتم عرض الملفات الثابتة غير المخزّنة مؤقتًا من Cloud Run، وسيتم تخزينها وعرضها من المصدر App Hosting
في إصدار لاحق لتحسين الأداء.
- قد يعرض Firebase Console بشكل متقطّع الخطأ "لم يتم العثور على عملية الإنشاء و
هي غير صالحة" عند إنشاء واجهة خلفية.
- تتشارك جميع الواجهات الخلفية في المشروع نفسه مؤسسة/حساب GitHub.
ويمكن ربطها بمستودعات مختلفة ضمن هذه المؤسسة/الحساب.
لإنشاء واجهات خلفية مرتبطة بحسابات GitHub مختلفة، ضَعها في مشاريع منفصلة.
المشاكل في تطبيقات Angular وتحديد المشاكل وحلّها
على الرغم من أنّ خدمة App Hosting تتيح استخدام Angular وهي قيد التطوير و
التوسّع بشكل نشط، فإنّها تتضمّن القيود التالية:
- التدويل (I18n): على الرغم من أنّ وظائف التدويل الأساسية تعمل، قد يؤدي الانتقال المباشر إلى صفحات العرض من جهة الخادم (SSR)
إلى حدوث أخطاء.
- التوطين: لا يمكن إنشاء إصدارات لمناطق مختلفة.
- أدوات الإنشاء: لا تتوفّر حاليًا سوى أداة إنشاء التطبيقات.
- البيئات وأدوات Monorepo: ستفشل مشاريع Angular التي تتضمّن أكثر من
هدف تطبيق واحد. للحصول على دعم أكثر اكتمالاً لـ Monorepo،
استخدِم Nx.
المشاكل في Next.js وتحديد المشاكل وحلّها
- تكون ميزة تحسين الصور المضمّنة في NextJS غير مفعّلة تلقائيًا على خدمة "استضافة التطبيقات"
ما لم تضبط
images.unoptimized على "خطأ" بشكل صريح أو تستخدِم
أداة تحميل صور مخصّصة. الاطّلاع على مقالة تحسين تحميل الصور على Next.js.
- تفكّ
Cloud Run ترميز مسارات عناوين URL التي تحتوي على أحرف تم ترميزها بنسبة مئوية. قد يؤدي ذلك إلى حدوث مشاكل في الميزات التي تتوقّع مسارات عناوين URL التي تم ترميزها فقط، مثل التوجيه المتوازي في Next.js.
- تفرض خدمة "App Hosting" حاليًا قيودًا على التخزين المؤقت لتطبيقات NextJS التي تستخدِم
البرامج الوسيطة.
من المفترض أن تتحسّن معدّلات نتيجة ذاكرة التخزين المؤقت بمرور الوقت.
- تفكّ Cloud Run ترميز مسارات عناوين URL التي تحتوي على أحرف تم ترميزها بنسبة مئوية.
قد يؤدي ذلك إلى حدوث مشاكل في الميزات التي تتوقّع مسارات عناوين URL التي تم ترميزها فقط، مثل
التوجيه المتوازي في Next.js