تحديد المشاكل وحلّها والتسجيل

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

الأدوات المتاحة لتحديد المشاكل وحلّها

تتوفر الكثير من الأدوات في المتصفح لتصحيح الأخطاء وتحديد المشاكل وحلّها أثناء تطوير مشغِّل الخدمات. وفي ما يلي بعض الموارد لمساعدتك في بدء استخدام المتصفّح الذي تختاره.

Chrome وEdge

يضم Chrome (والإصدارات الحديثة من Edge المستنِدة إلى محرك Blink) مجموعة فعّالة من أدوات المطوّرين. بعض هذه الأدوات، بالأخص في "أدوات مطوري البرامج" في Chrome، تم التطرق إليها في وقت سابق في هذه المستندات، ولكن لا يزال هناك المزيد لاكتشافه:

Firefox

يمكن لمستخدمي Firefox الرجوع إلى الموارد التالية:

Safari

لدى Safari حاليًا مجموعة محدودة أكثر من أدوات المطوّرين المخصصة لتصحيح أخطاء موظفي الخدمة. يمكنك معرفة المزيد عنها من خلال هذه الموارد:

تسجيل مربع العمل

يقدم Workbox تحسينًا رئيسيًا في تجربة المطوِّرين في التسجيل المعلوماتي. عند تمكين التسجيل، يسجل Workbox جميع أنشطته تقريبًا بطريقة مميزة ووظيفية.

لقطة شاشة لرسائل تسجيل Workbox في وحدة التحكّم في "أدوات مطوري البرامج" في Chrome يتم تمييز رسائل التسجيل عن سجلات وحدة التحكّم العادية التي تحمل شارة "صندوق العمل". يمكن توسيع كل رسالة للحصول على مزيد من المعلومات حول تصحيح الأخطاء.

تُفعِّل الإصدارات التطويرية من Workbox ميزة تسجيل الدخول تلقائيًا، بينما توقِف الإصدارات للإصدار العلني. هناك خطوات مختلفة للتبديل بين إصدارَي التطوير والإنتاج، استنادًا إلى ما إذا كنت تنشئ حزمة Workspace مخصّصة أو تستخدم نسخة مجمّعة مسبقًا عبر workbox-sw.

مع أداة تجميع أو بدونها

الحزم عبارة عن أدوات تأخذ التعليمات البرمجية من وحدات فردية وتنشئ مخرجات JavaScript جاهزة للتشغيل في المتصفح. عند استخدام أداة لحِزم، يمكنك أيضًا استخدام مكوّن Workbox الإضافي الخاص بالحزمة والذي يساعد في التخزين المؤقت، مثل workbox-webpack-plugin، أو قد يكون مجرّد تجميع منطق التخزين المؤقت لوقت تشغيل Workbox. وفي كلتا الحالتين، يتأثر تسجيل Workbox بإعداد وضع الإنتاج في إعدادات أداة التجميع:

  • في حزمة الويب، يمكن ضبط خيار الإعداد mode على 'production' أو 'development'. سيستخدم workbox-webpack-plugin تسجيل بيانات الإنتاج أو التطوير في Workbox استنادًا إلى هذه القيمة.
  • بالنسبة إلى ميزة البيانات المجمّعة، يقبل rollup-plugin-workbox خيار ضبط mode الذي يؤثّر أيضًا في إمكانية تسجيل "صندوق العمل" لأي بيانات على وحدة التحكّم. إذا كنت تستخدم ميزة "دمج البيانات" بدون المكوّن الإضافي الخاص بـ Workbox، ستحتاج إلى ضبط @rollup/plugin-replace لاستبدال process.env.NODE_ENV بـ 'development' أو 'production'.

لنفترض أنه يجب إلغاء سلوك التسجيل التلقائي في عملية التطوير. في هذه الحالة، من المفترض أن يسمح لك المكوّن الإضافي المناسب Workbox لبرنامج الحزمة بترميز تفضيل تصحيح أخطاء السجلات في التهيئة. على سبيل المثال، يمكنك إيقاف تسجيل الدخول إلى Workbox من خلال خيار mode في workbox-webpack-plugin من أجل طريقة GenerateSW.

بدون أداة تجميع

في حين أن الحزم رائعة، إلا أن كل مشروع يحتاج إليها. إذا وجدت نفسك في موقف تريد فيه إضافة Workbox إلى مشروع لا يستخدم أداة تجميع، ننصحك باستخدام workbox-sw.

تعمل وحدة workbox-sw على تبسيط تحميل وحدات Workbox الأخرى (مثل workbox-routing أو workbox-precaching أو غير ذلك) من شبكة توصيل محتوى (CDN). ويعتمد تحميل حِزم التطوير أو الإنتاج على عنوان URL المستخدَم للوصول إلى تطبيق الويب. يُحمِّل workbox-sw تلقائيًا إصدار التطوير من Workbox إذا كان تطبيق الويب يعمل على http://localhost، ويحمّل إصدار الإنتاج في جميع الأوقات الأخرى.

يمكنك إلغاء السلوك التلقائي من خلال استدعاء طريقة setConfig في Workbox لضبط خيار debug على true:

// Load workbox-sw from a CDN
importScripts('https://storage.googleapis.com/workbox-cdn/releases/6.2.0/workbox-sw.js');

// This must come before any other workbox.* methods.
workbox.setConfig({
  debug: true
});

// Now use workbox.routing.*, workbox.precaching.*, etc.

إيقاف إصدارات تطوير تسجيل الدخول في أي سير عمل

سواء كنت تستخدم أداة تجميع أم لا، يمكنك إيقاف جميع إصدارات تطوير عمليات تسجيل الدخول من خلال تعيين true لمتغيّر self.__WB_DISABLE_DEV_LOGS خاص في مشغّل الخدمات:

//
self.__WB_DISABLE_DEV_LOGS = true;

// The rest of your Workbox service worker code goes here

تتمثّل إحدى ميزات هذه الطريقة في أنّها مستقلة تمامًا عن إعدادات أداة تجميع الحزم، وستعمل سواء كنت تستخدم workbox-sw بشكل مباشر أو تعتمد على أداة تجميع لحزم بيانات مشغّل الخدمات الذي يدعمه Workbox نيابةً عنك.

معلومات إضافية

إذا كنت لا تزال تواجه صعوبات في معرفة أسباب المشكلة في مشغّل الخدمات الذي يتضمّن أعطالاً وكانت عمليات التسجيل غير كافية، جرِّب طرح سؤال على Stack Overflow باستخدام العلامة workbox. إذا لم تتمكّن من العثور على إجابة هناك، يُرجى الإبلاغ عن مشكلة في GitHub (بعد قراءة إرشادات المساهمة). وهذا لا يتيح لجمهور عريض من المطورين قراءة أسئلتك والإجابة عنها فحسب، بل قد تساعد الإجابة عن سؤالك شخصًا ما في نفس الموقف لاحقًا.