Hata ayıklama uzantıları

Uzantılar, Chrome Geliştirici Araçları'nın web sayfaları için sağladığı hata ayıklama avantajlarından yararlanabilir ancak benzersiz davranış özelliklerine sahiptir. Usta bir uzantı hata ayıklayıcısı olmak için bu davranışları, uzantı bileşenlerinin birbirleriyle nasıl çalıştığını ve hataları nerede yakalayacağınızı anlamanız gerekir. Bu eğitim, geliştiricilere uzantılarda hata ayıklama hakkında temel bilgiler verir.

Günlükleri bulma

Uzantılar birçok farklı bileşenden oluşur ve bu bileşenlerin ayrı ayrı sorumlulukları vardır. Farklı uzantı bileşenleriyle ilgili hata günlüklerini bulmaya başlamak için buradan bozuk bir uzantı indirin.

Arka plan komut dosyası

chrome://extensions adresindeki Chrome uzantıları yönetim sayfasına gidin ve geliştirici modunun etkin olduğundan emin olun. Load Unpacked (Paketi Açılmamış Olarak Yükle) düğmesini tıklayın ve bozuk uzantı dizinini seçin. Uzantı yüklendikten sonra üç düğme görünür: Ayrıntılar, Kaldır ve kırmızı harflerle Hatalar.

Uzantı yönetimi sayfasındaki hata düğmesini gösteren resim

Hata günlüğünü görüntülemek için Hatalar düğmesini tıklayın. Uzantı sistemi, arka plan komut dosyasında bir sorun buldu.

Uncaught TypeError: Cannot read property 'addListener' of undefined

Arka plan komut dosyası hatasını gösteren Uzantı Yönetimi sayfası

Ayrıca, Görünümleri incele'nin yanındaki mavi bağlantı seçilerek arka plan komut dosyası için Chrome Geliştirici Araçları paneli açılabilir.

Geliştirici Araçları, arka plan komut dosyası hatası gösteriyor

Koda dönün.

chrome.runtime.oninstalled.addListener(function() {
  chrome.storage.sync.set({color: '#3aa757'}, function() {
    console.log('The color is green.');
  });
  chrome.declarativeContent.onPageChanged.removeRules(undefined, function() {
    chrome.declarativeContent.onPageChanged.addRules([{
      conditions: [new chrome.declarativeContent.PageStateMatcher({
        pageUrl: {hostEquals: 'developer.chrome.com'},
      })],
      actions: [new chrome.declarativeContent.ShowPageAction()]
    }]);
  });
});

Arka plan komut dosyası, onInstalled etkinliğini dinlemeye çalışıyor ancak özellik adında büyük harfli "I" kullanılması gerekiyor. Kodu doğru çağrıyı yansıtacak şekilde güncelleyin, sağ üst köşedeki Tümünü temizle düğmesini tıklayın ve uzantıyı yeniden yükleyin.

Pop-up

Uzantı artık doğru şekilde başlatıldığına göre diğer bileşenler test edilebilir. Bu sayfayı yenileyin veya yeni bir sekme açıp developer.chrome.com adresindeki herhangi bir sayfaya gidin, pop-up'ı açın ve yeşil kareyi tıklayın. Ve... hiçbir şey olmaz.

Uzantı Yönetimi Sayfası'na geri döndüğünüzde Hatalar düğmesi yeniden görünür. Yeni günlüğü görüntülemek için bu seçeneği tıklayın.

Uncaught ReferenceError: tabs is not defined

Uzantı Yönetimi Sayfası'nda pop-up hatası gösteriliyor

Pop-up hataları, pop-up incelenerek de görüntülenebilir.

Geliştirici Araçları'nda pop-up hatası gösteriliyor

tabs is undefined hatası, uzantının içerik komut dosyasını nereye yerleştireceğini bilmediğini belirtir. Bu sorun, tabs.query() yöntemi çağrılıp etkin sekme seçilerek düzeltilebilir.

  let changeColor = document.getElementById('changeColor');

  chrome.storage.sync.get('color', function(data) {
    changeColor.style.backgroundColor = data.color;
    changeColor.setAttribute('value', data.color);
  });

  changeColor.onclick = function(element) {
    let color = element.target.value;
    chrome.tabs.query({active: true, currentWindow: true}, function(tabs) {
      chrome.tabs.executeScript(
          tabs[0].id,
          {code: 'document.body.style.backgroundColor = color;'});
    });
  };

Kodu güncelleyin, sağ üst köşedeki Tümünü temizle düğmesini tıklayın ve uzantıyı yeniden yükleyin.

İçerik komut dosyası

Sayfayı yenileyin, açılır pencereyi açın ve yeşil kutuyu tıklayın. Ve... hayır, arka planın rengi hâlâ değişmedi. Uzantı Yönetimi Sayfası'na geri döndüğünüzde Hatalar düğmesinin olmadığını görürsünüz. Büyük olasılıkla suçlu, web sayfasında çalışan içerik komut dosyasıdır.

Uzantının değiştirmeye çalıştığı web sayfasının Geliştirici Araçları panelini açın.

Web sayfası konsolunda gösterilen uzantı hatası

Yalnızca çalışma zamanı hataları, console.warning ve console.error, uzantı yönetimi sayfasında kaydedilir.

Geliştirici Araçları'nı içerik komut dosyasından kullanmak için top'ın yanındaki açılır liste okunu tıklayın ve uzantıyı seçin.

Uncaught ReferenceError: tabs is not defined

Hata mesajında color tanımlı olmadığı belirtiliyor. Uzantı, değişkeni doğru şekilde iletmiyor olabilir. Renk değişkenini koda aktarmak için eklenen komut dosyasını düzeltin.

  {code: 'document.body.style.backgroundColor = "' + color + '";'});

Uzantı sekmeleri

Sekme olarak gösterilen uzantı sayfalarının (ör. geçersiz kılma sayfaları ve tam sayfa seçenekleri) günlükleri web sayfası konsolunda ve uzantı yönetimi sayfasında bulunabilir.

Ağ isteklerini izleme

Pop-up, en hızlı geliştiriciler bile Geliştirici Araçları'nı açamadan önce genellikle gerekli tüm ağ isteklerini yapar. Bu istekleri görüntülemek için ağ panelinden yenileyin. Geliştirici Araçları panelini kapatmadan pop-up'ı yeniden yükler.

Pop-up ağ isteklerini görüntülemek için ağ panelinde yenileyin.

İzinleri tanımlama

Uzantılar, web sayfalarına benzer özelliklere sahip olsa da genellikle çerezler, depolama ve kaynaklar arası XMLHttpRequest gibi belirli özellikleri kullanmak için izin gerektirir. Bir uzantının manifest dosyasında doğru izinleri istediğinden emin olmak için izinler makalesini ve kullanılabilen Chrome API'lerini inceleyin.

  {
    "name": "Broken Background Color",
    "version": "1.0",
    "description": "Fix an Extension!",
    "permissions": [
      "activeTab",
      "declarativeContent",
      "storage"
    ],
    "options_page": "options.html",
    "background": {
      "scripts": ["background.js"],
      "persistent": false
    },
    "page_action": {
      "default_popup": "popup.html",
      "default_icon": {
        "16": "images/get_started16.png",
        "32": "images/get_started32.png",
        "48": "images/get_started48.png",
        "128": "images/get_started128.png"
      }
    },
    "icons": {
      "16": "images/get_started16.png",
      "32": "images/get_started32.png",
      "48": "images/get_started48.png",
      "128": "images/get_started128.png"
    },
    "manifest_version": 2
  }

Sonraki adımlar

Uzantılarda hata ayıklama hakkında daha fazla bilgi için Geliştirme ve Hata Ayıklama başlıklı videoyu izleyin. Dokümanları okuyarak Chrome Geliştirici Araçları hakkında daha fazla bilgi edinin.