Esegui il debug delle estensioni

Le estensioni possono accedere agli stessi Chrome DevTools disponibili per le pagine web. Per diventare esperti nel debug delle estensioni, dovrai sapere come individuare i log e gli errori dei diversi componenti delle estensioni. Questo tutorial illustra tecniche di base per eseguire il debug dell'estensione.

Prima di iniziare

Questa guida presuppone che tu abbia esperienza di base di sviluppo web. Ti consigliamo di leggere Nozioni di base sullo sviluppo per un'introduzione al flusso di lavoro per lo sviluppo delle estensioni. Progettare l'interfaccia utente offre un'introduzione all'utente di interfaccia utente disponibili nelle estensioni.

Annulla l'estensione

Questo tutorial interromperà un componente dell'estensione alla volta, quindi mostrerà come correggerlo. Ricordati di annullare i bug introdotti in una sezione prima di passare alla sezione successiva. Scarica l'esempio di Broken Color su GitHub.

Eseguire il debug del manifest

Per prima cosa, rompi il file manifest modificando la chiave "version" in "versions":

manifest.json:

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

Ora proviamo a caricare l'estensione localmente. Verrà visualizzata una finestra di dialogo di errore che rimanda al problema:

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.
Un'estensione con una chiave manifest non valida che attiva una finestra di dialogo di errore durante il tentativo di caricamento.
Una finestra di dialogo di errore relativa alla chiave manifest non valida.

Quando una chiave manifest non è valida, l'estensione non viene caricata, ma Chrome ti fornisce un suggerimento su come risolvere il problema.

Annulla la modifica e inserisci un'autorizzazione non valida per vedere cosa succede. Modifica l'autorizzazione "activeTab" in minuscolo "activetab":

manifest.json:

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

Salva l'estensione e prova a caricarla di nuovo. Dovrebbe essere caricato questa volta. Nell'estensione Nella pagina di gestione vedrai tre pulsanti: Dettagli, Rimuovi ed Errori. La sezione Errori l'etichetta del pulsante diventa rossa quando si verifica un errore. Fai clic sul pulsante Errori per visualizzare il seguente errore:

Permission 'activetab' is unknown or URL pattern is malformed.
Quando viene fatto clic sul pulsante di errore, viene visualizzato un errore
Trovare un messaggio di errore facendo clic sul pulsante Errori.

Prima di andare avanti, modifica nuovamente l'autorizzazione, fai clic su Cancella tutto nell'angolo in alto a destra per cancellare i log e ricaricare l'estensione.

Pulsante Cancella tutto
. Come eliminare gli errori delle estensioni.
di Gemini Advanced.
.

Esegui il debug del service worker

Localizzazione dei log

Il service worker imposta il colore predefinito sullo spazio di archiviazione e lo registra nella console. Per visualizzare questo log, apri il riquadro Chrome DevTools selezionando il link blu accanto a Esamina visualizzazioni.

Apertura di DevTools per il service worker dell'estensione in corso...
. Log dei service worker nel riquadro Chrome DevTools.
di Gemini Advanced.
.

Errori di localizzazione

Interrompiamo il service worker modificando onInstalled in oninstalled minuscolo:

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

Aggiorna e fai clic su Errori per visualizzare il log degli errori. Il primo errore ti informa che la registrazione del service worker non è riuscita. Questo significa che si è verificato un problema durante l'avvio:

Service worker registration failed. Status code: 15.
Registrazione del Service worker non riuscita. Codice di stato: messaggio di errore 15
Messaggio di errore relativo alla registrazione del Service worker.
di Gemini Advanced.
.

L'errore effettivo si verifica dopo:

Uncaught TypeError: Cannot read properties of undefined (reading 'addListener')
Uncaught TypeError: Impossibile leggere le proprietà di un messaggio di errore non definito
Messaggio TypeError non rilevato.

Annulla il bug che abbiamo introdotto, fai clic su Cancella tutto nell'angolo in alto a destra e ricarica l'estensione.

Controllare lo stato del service worker

Puoi identificare quando il service worker si riattiva per eseguire le attività seguendo questi passaggi:

  1. Copia l'ID estensione che si trova sopra "Esamina visualizzazioni".
    ID estensione nella pagina Gestione delle estensioni
    . ID estensione nella pagina Gestione delle estensioni.
  2. Apri il file manifest nel browser. Ad esempio: text chrome-extension://YOUR_EXTENSION_ID/manifest.json
  3. Esamina il file.
  4. Vai al riquadro Applicazione.
  5. Vai al riquadro Service worker.

Per testare il codice, avvia o arresta il service worker utilizzando i link accanto a status.

Stato del service worker nel riquadro Applicazione
Stato del service worker nel riquadro Applicazione. Fai clic per ingrandire l'immagine.

Inoltre, se hai apportato modifiche al codice del service worker, puoi fare clic su Aggiorna o su skipwaiting per applicarle immediatamente.

Stato del service worker nel riquadro Applicazione
Aggiornamento del service worker nel riquadro Applicazione. Fai clic per ingrandire l'immagine.
di Gemini Advanced.
.

Esegui il debug del popup

Ora che l'estensione è stata inizializzata correttamente, rompiamo il popup commentando le righe evidenziate di seguito:

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

Torna alla pagina Gestione delle estensioni. Il pulsante Errori viene visualizzato di nuovo. Fai clic per visualizza il nuovo log. Viene visualizzato il seguente messaggio di errore:

Uncaught ReferenceError: tabs is not defined
Pagina Gestione delle estensioni che mostra un errore popup
Pagina di gestione delle estensioni che mostra un errore popup.

Puoi aprire i DevTools del popup ispezionando il popup.

In DevTools viene visualizzato un errore popup.
. In DevTools viene visualizzato un errore popup.

L'errore tabs is undefined indica che l'estensione non sa dove inserire lo script dei contenuti. Per risolvere il problema, chiama tabs.query() e seleziona la scheda attiva.

Per aggiornare il codice, fai clic sul pulsante Cancella tutto nell'angolo in alto a destra, quindi ricarica la sezione .

Esegui il debug degli script di contenuti

Ora interrompiamo lo script dei contenuti modificando la variabile "color" in "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;
}  

Aggiorna la pagina, apri il popup e fai clic sulla casella verde. Non accade niente.

Se vai alla pagina Gestione delle estensioni, il pulsante Errori non viene visualizzato. Il motivo è che solo gli errori di runtime, console.warning e, console.error sono registrate nella pagina Gestione delle estensioni.

Gli script di contenuti vengono eseguiti all'interno di un sito web. Per individuare questi errori dobbiamo esaminare la pagina web che l'estensione sta cercando di modificare:

Uncaught ReferenceError: colors is not defined
Errore dell'estensione visualizzato nella console della pagina web
Errore dell'estensione visualizzato nella console della pagina web.

Per utilizzare DevTools dallo script dei contenuti, fai clic sulla freccia del menu a discesa accanto ad in alto e seleziona l'estensione.

Uncaught ReferenceError: i colori non sono definiti
. Uncaught ReferenceError: i colori non sono definiti.

L'errore indica che colors non è definito. L'estensione non deve trasmettere correttamente la variabile. Correggi lo script inserito per passare la variabile color nel codice.

Monitora le richieste di rete

Spesso il popup effettua tutte le richieste di rete necessarie prima ancora della più veloce gli sviluppatori possono aprire DevTools. Per visualizzare queste richieste, aggiorna dal riquadro Rete. it ricarica il popup senza chiudere il riquadro DevTools.

Aggiorna all'interno del riquadro Rete per visualizzare le richieste di rete popup
. Aggiorna il riquadro Rete per visualizzare le richieste di rete popup.

Dichiara le autorizzazioni

Alcune API delle estensioni richiedono le autorizzazioni. Consulta l'articolo sulle autorizzazioni e la documentazione di Chrome API per garantire che un'estensione richieda le autorizzazioni corrette nel manifest.

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

Per approfondire

Scopri di più sugli strumenti per sviluppatori di Chrome leggendo la documentazione.