إضافات تصحيح الأخطاء

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

قبل البدء

يفترض هذا الدليل أنّ لديك خبرة أساسية في تطوير الويب. ننصحك بقراءة مقالة أساسيات التطوير للحصول على مقدّمة عن سير عمل تطوير الإضافات. تصميم واجهة المستخدم: تقدّم لك هذه المقالة مقدمة عن عناصر واجهة المستخدِم المتاحة في الإضافات.

إيقاف الإضافة

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

تصحيح أخطاء البيان

أولاً، لنقسِّم ملف البيان عن طريق تغيير المفتاح "version" إلى "versions":

manifest.json:

{
  "name": "Broken Background Color",
  "version": "1.0",
  "versions": "1.0",
  "description": "Fix an Extension!",
  ...
}

لنحاول الآن تحميل الإضافة على الجهاز. سيظهر لك مربّع حوار خطأ يشير إلى المشكلة:

Failed to load extension
Required value version is missing or invalid. It must be between 1-4 dot-separated integers each between 0 and 65536.
Could not load manifest.
إضافة تحتوي على مفتاح بيان غير صالح يؤدي إلى ظهور مربّع حوار خطأ عند محاولة التحميل
مربّع حوار خطأ مفتاح بيان غير صالح

عندما يكون مفتاح البيان غير صالح، يتعذّر تحميل الإضافة، ولكن يقدّم لك Chrome تلميحًا بشأن كيفية حلّ المشكلة.

يمكنك التراجع عن هذا التغيير وإدخال إذن غير صالح لمعرفة ما سيحدث. غيِّر إذن "activeTab" إلى "activetab" باللغة الإنجليزية:

manifest.json:

{
  ...
  "permissions": ["activeTab", "scripting", "storage"],
  "permissions": ["activetab", "scripting", "storage"],
  ...
}

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

Permission 'activetab' is unknown or URL pattern is malformed.
النقر على زر الخطأ وظهور خطأ
العثور على رسالة خطأ من خلال النقر على الزر "الأخطاء"

قبل المتابعة، يمكنك تغيير الإذن مرة أخرى، والنقر على محو الكل في أعلى يسار الصفحة لمحو السجلات، وإعادة تحميل الإضافة.

زر محو الكل
كيفية محو أخطاء الإضافات

تصحيح أخطاء مشغّل الخدمة

تحديد موقع السجلات

يضبط Worker الخدمة اللون التلقائي على مساحة التخزين ويُسجّله في وحدة التحكّم. لعرض هذا السجلّ، افتح لوحة "أدوات مطوّري البرامج في Chrome" من خلال النقر على الرابط الأزرق بجانب فحص المشاهدات.

فتح "أدوات مطوّري البرامج" لعامل الخدمة في الإضافة
سجلّات الخدمة العاملة في لوحة "أدوات مطوّري البرامج في Chrome"

تحديد الأخطاء

لنوقف عامل الخدمة عن العمل عن طريق تغيير onInstalled إلى oninstalled بالتنسيق الأصغر:

service-worker.js:

// There's a typo in the line below;
// ❌ oninstalled should be ✅ onInstalled.
chrome.runtime.onInstalled.addListener(() => { 
chrome.runtime.oninstalled.addListener(() => { 
  chrome.storage.sync.set({ color: '#3aa757' }, () => {
    console.log('The background color is green.');
  });
});

أعِد تحميل الصفحة وانقر على الأخطاء لعرض سجلّ الأخطاء. يُعلمك الخطأ الأول بتعذُّر تسجيل الخدمة العاملة. يعني ذلك أنّه حدث خطأ أثناء بدء عملية الربط:

Service worker registration failed. Status code: 15.
تعذّر تسجيل مشغّل الخدمة. رمز الحالة: رسالة الخطأ 15
رسالة خطأ تسجيل مشغّل الخدمة

يظهر الخطأ الفعلي بعد:

Uncaught TypeError: Cannot read properties of undefined (reading 'addListener')
Uncaught TypeError: Cannot read properties of undefined error message
رسالة TypeError لم يتمّ رصدها.

يمكنك التراجع عن الخطأ الذي أدخلناه، والنقر على محو الكل في أعلى يسار الصفحة، وإعادة تحميل الإضافة.

التحقّق من حالة الخدمة

يمكنك تحديد وقت تنشيط الخدمة لتنفيذ المهام باتّباع الخطوات التالية:

  1. انسخ معرّف الإضافة الظاهر أعلى "فحص المشاهدات".
    رقم تعريف الإضافة في صفحة "إدارة الإضافات"
    معرّف الإضافة في صفحة "إدارة الإضافات"
  2. افتح ملف البيان في المتصفّح. على سبيل المثال: text chrome-extension://YOUR_EXTENSION_ID/manifest.json
  3. فحص الملف
  4. انتقِل إلى لوحة التطبيق.
  5. انتقِل إلى لوحة مشغِّلات الخدمات.

لاختبار الرمز، ابدأ عامل الخدمة أو أوقِفه باستخدام الروابط بجانب الحالة.

حالة الخدمة في لوحة التطبيق
حالة الخدمة في لوحة التطبيق (انقر لتكبير الصورة)

تصحيح أخطاء النافذة المنبثقة

بعد أن تمّت بدء تشغيل الإضافة بشكل صحيح، لنوقف النافذة المنبثقة من خلال تعليق الأسطر المميّزة أدناه:

popup.js:

...
changeColorButton.addEventListener('click', (event) => {
  const color = event.target.value;

  // Query the active tab before injecting the content script
  chrome.tabs.query({ active: true, currentWindow: true }, (tabs) => { 
    // Use the Scripting API to execute a script
    chrome.scripting.executeScript({
      target: { tabId: tabs[0].id },
      args: [color],
      func: setColor
    });
  });
});

انتقِل مرة أخرى إلى صفحة "إدارة الإضافات". سيظهر الزر الأخطاء مرة أخرى. انقر عليه لاطلاع على السجلّ الجديد. تظهر رسالة الخطأ التالية:

Uncaught ReferenceError: tabs is not defined
صفحة "إدارة الإضافات" تعرض خطأ في النافذة المنبثقة
تعرض صفحة "إدارة الإضافات" خطأ منبثق.

يمكنك فتح أدوات مطوّري البرامج للنافذة المنبثقة من خلال فحصها.

تعرِض "أدوات مطوّري البرامج" خطأ في النافذة المنبثقة.
تعرِض "أدوات مطوّري البرامج" خطأ في النافذة المنبثقة.

يشير الخطأ tabs is undefined إلى أنّ الإضافة لا تعرف مكان إدراج النص البرمجي للمحتوى. يمكنك تصحيح ذلك من خلال استدعاء tabs.query()، ثم اختيار علامة التبويب النشطة.

لتعديل الرمز، انقر على الزر محو الكل في أعلى يسار الصفحة، ثم أعِد تحميل الإضافة.

تصحيح أخطاء النصوص البرمجية للمحتوى

لنقسِّم الآن نص المحتوى عن طريق تغيير المتغيّر color إلى colors:

content.js:

...
function setColor(color) {
  // There's a typo in the line below;
  // ❌ colors should be ✅ color.
  document.body.style.backgroundColor = color;
  document.body.style.backgroundColor = colors;
}  

أعِد تحميل الصفحة، وافتح النافذة المنبثقة وانقر على المربّع الأخضر. لا يحدث أي شيء.

إذا انتقلت إلى صفحة "إدارة الإضافات"، لن يظهر الزر الأخطاء. ويعود السبب في ذلك إلى أنّه لا يتم تسجيل سوى أخطاء وقت التشغيل وconsole.warning و console.error في صفحة "إدارة الإضافات".

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

Uncaught ReferenceError: colors is not defined
خطأ في إضافة معروض في وحدة تحكّم صفحة الويب
خطأ في الإضافة يظهر في وحدة تحكّم صفحة الويب

لاستخدام أدوات المطوّر من داخل نص المحتوى، انقر على سهم القائمة المنسدلة بجانب top واختَر الإضافة.

Uncaught ReferenceError: colors is not defined
Uncaught ReferenceError: colors is not defined.

يشير الخطأ إلى أنّه لم يتم تحديد colors. يجب ألا تُرسل الإضافة المتغيّر بشكل صحيح. صحِّح النص البرمجي المُحقَّق لإدخال متغيّر اللون في الرمز.

مراقبة طلبات الشبكة

غالبًا ما تُجري النافذة المنبثقة جميع طلبات الشبكة المطلوبة قبل أن يتمكّن حتى أسرع المطوّرين من فتح "أدوات المطوّر". للاطّلاع على هذه الطلبات، أعِد تحميل الصفحة من داخل لوحة الشبكة. يؤدي ذلك إلى reloadingتحديث النافذة المنبثقة بدون إغلاق لوحة أدوات المطوّرين.

إعادة تحميل الصفحة داخل لوحة الشبكة لعرض طلبات الشبكة المنبثقة
أعِد تحميل الصفحة في لوحة الشبكة لعرض طلبات الشبكة المنبثقة.

الإفصاح عن الأذونات

تتطلّب بعض واجهات برمجة التطبيقات الخاصة بالإضافات أذونات. راجِع مقالة الأذونات وواجهات برمجة تطبيقات Chrome للتأكّد من أنّ الإضافة تطلب الأذونات الصحيحة في البيان.

  {
    "name": "Broken Background Color",
    ...
    "permissions": [
      "activeTab",
      "declarativeContent",
      "storage"
    ],
  ...
  }

مراجع إضافية

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