Fehler bei Erweiterungen beheben

Für Erweiterungen stehen die gleichen Debugging-Vorteile zur Verfügung, die die Chrome-Entwicklertools für Webseiten bieten. Sie haben jedoch besondere Eigenschaften. Um ein Master-Erweiterungs-Debugger zu werden, müssen Sie mit diesen Verhaltensweisen vertraut sein, wie Erweiterungskomponenten miteinander funktionieren und wo Fehler behoben werden können. In dieser Anleitung erhalten Entwickler grundlegende Informationen zum Debugging von Erweiterungen.

Logs suchen

Erweiterungen bestehen aus vielen verschiedenen Komponenten und haben individuelle Verantwortlichkeiten. Laden Sie hier eine fehlerhafte Erweiterung herunter, um nach Fehlerlogs für verschiedene Erweiterungskomponenten zu suchen.

Hintergrundskript

Rufen Sie die Verwaltungsseite für Chrome-Erweiterungen unter chrome://extensions auf und prüfen Sie, ob der Entwicklermodus aktiviert ist. Klicken Sie auf die Schaltfläche Load Unpacked (Entpackte Datei laden) und wählen Sie das Verzeichnis der fehlerhaften Erweiterung aus. Nachdem die Erweiterung geladen wurde, sollte sie drei Schaltflächen in roten Buchstaben enthalten: Details, Remove und Errors.

Bild mit der Schaltfläche „Fehler“ auf der Seite zur Verwaltung von Erweiterungen

Klicken Sie auf die Schaltfläche Fehler, um das Fehlerprotokoll aufzurufen. Das Erweiterungssystem hat ein Problem im Hintergrundskript erkannt.

Uncaught TypeError: Cannot read property 'addListener' of undefined

Seite zur Verwaltung von Erweiterungen, die einen Skriptfehler im Hintergrund anzeigt

Außerdem kann der Bereich mit den Chrome-Entwicklertools für das Hintergrundskript geöffnet werden. Wählen Sie dazu den blauen Link neben Ansichten prüfen aus.

Entwicklertools zeigen Hintergrundskriptfehler an

Kehren Sie zum Code zurück.

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()]
    }]);
  });
});

Das Hintergrundskript versucht, auf das Ereignis onInstalled zu warten, aber der Attributname erfordert ein großes „I“. Passen Sie den Code an den korrekten Aufruf an, klicken Sie oben rechts auf die Schaltfläche Alle löschen und aktualisieren Sie die Erweiterung.

Pop-up

Nachdem die Erweiterung nun korrekt initialisiert wird, können andere Komponenten getestet werden. Aktualisieren Sie diese Seite oder öffnen Sie einen neuen Tab und rufen Sie eine beliebige Seite auf developer.chrome.com auf. Öffnen Sie dann das Pop-up und klicken Sie auf das grüne Quadrat. Und... nichts passiert.

Gehen Sie zurück zur Seite für die Verwaltung von Erweiterungen. Die Schaltfläche Fehler wird wieder angezeigt. Klicken Sie darauf, um das neue Log aufzurufen.

Uncaught ReferenceError: tabs is not defined

Seite zur Verwaltung von Erweiterungen mit Pop-up-Fehler

Pop-up-Fehler können auch im Pop-up angezeigt werden.

Entwicklertools mit Pop-up-Fehler

Der Fehler tabs is undefined besagt, dass die Erweiterung nicht weiß, wo das Inhaltsskript eingefügt werden soll. Sie können das Problem beheben, indem Sie die Methode tabs.query() aufrufen und dann den aktiven Tab auswählen.

  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;'});
    });
  };

Aktualisieren Sie den Code, klicken Sie oben rechts auf die Schaltfläche Alle löschen und aktualisieren Sie dann die Erweiterung.

Inhaltsskript

Aktualisieren Sie die Seite, öffnen Sie das Pop-up-Fenster und klicken Sie auf das grüne Feld. Und... nein, die Farbe des Hintergrunds hat sich immer noch nicht geändert! Wenn Sie zur Seite für die Verwaltung von Erweiterungen zurückkehren, wird die Schaltfläche Fehler nicht angezeigt. Die wahrscheinliche Ursache ist das Inhaltsskript, das auf der Webseite ausgeführt wird.

Öffne den Bereich „Entwicklertools“ der Webseite, die durch die Erweiterung geändert werden soll.

Erweiterungsfehler in der Konsole der Webseite angezeigt

Nur Laufzeitfehler, console.warning und console.error werden auf der Seite zur Verwaltung von Erweiterungen protokolliert.

Um die Entwicklertools im Inhaltsskript zu verwenden, klicken Sie auf den Drop-down-Pfeil neben oben und wählen Sie die Erweiterung aus.

Nicht abgefangener ReferenceError: Tabs sind nicht definiert

Der Fehler besagt, dass color nicht definiert ist. Die Erweiterung darf die Variable nicht korrekt übergeben. Korrigieren Sie das eingefügte Skript, um die Farbvariable an den Code zu übergeben.

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

Tabs für Erweiterungen

Logs für Erweiterungsseiten, die als Tab angezeigt werden, z. B. Seiten überschreiben und Ganzseitenoptionen, finden Sie in der Webseitenkonsole und auf der Verwaltungsseite für Erweiterungen.

Netzwerkanfragen überwachen

Das Pop-up sendet häufig alle erforderlichen Netzwerkanfragen, bevor selbst die schnellsten Entwickler die Entwicklertools öffnen können. Wenn Sie diese Anfragen sehen möchten, aktualisieren Sie die Seite im Netzwerkbereich. Das Pop-up wird neu geladen, ohne den Bereich „Entwicklertools“ zu schließen.

Im Netzwerkbereich aktualisieren, um Pop-up-Netzwerkanfragen zu sehen

Erklärung von Berechtigungen

Erweiterungen haben zwar ähnliche Funktionen wie Webseiten, benötigen jedoch häufig eine Berechtigung zur Verwendung bestimmter Funktionen wie Cookies, Speicher und Cross-Origin XMLHttpRequsts. Lesen Sie den Artikel zu Berechtigungen und die verfügbaren Chrome APIs, um sicherzustellen, dass eine Erweiterung die richtigen Berechtigungen im Manifest anfordert.

  {
    "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
  }

Nächste Schritte

Weitere Informationen zur Fehlerbehebung bei Erweiterungen finden Sie unter Entwicklung und Fehlerbehebung. Weitere Informationen zu den Chrome-Entwicklertools finden Sie in der Dokumentation.