Conceitos básicos do service worker de extensão

Os service workers de extensão são instalados e atualizados de maneira diferente dos web service workers. Esta página explica essas diferenças.

Registrar service workers

Para registrar um service worker de extensão, especifique-o no campo "background" do arquivo manifest.json. Use a chave "service_worker", que especifica um único arquivo JavaScript. Service workers em páginas da Web ou apps da Web fazem o registro deles detectando primeiro recursos para serviceWorker em navigator e depois chamando register() na detecção de recursos. Isso não funciona para extensões.

{
  "name": "Awesome Test Extension",
  ...
  "background": {
    "service_worker": "service-worker.js"
  },
  ...
}

Importar scripts

Há dois métodos de importação de scripts para um service worker: a instrução import e o método importScripts(). Observe que import(), muitas vezes chamado de importação dinâmica, não é compatível.

Para usar a instrução import, adicione o campo "type" ao manifesto e especifique "module". Exemplo:

  "background": {
    "service_worker": "service-worker.js",
    "type": "module"
  }

Em seguida, use import normalmente. As declarações de importação não são compatíveis.

import { tldLocales } from './locales.js';

Use importScripts() como você faria em um service worker da Web.

importScripts('locales.js');

Atualizar

Para atualizar o service worker, publique uma nova versão da sua extensão na Chrome Web Store. Não é possível contornar isso carregando a extensão de um servidor. Por motivos de segurança, o Manifest V3 não oferece suporte a códigos hospedados remotamente. Seu service worker precisa fazer parte do pacote de extensão.