Os service workers de extensão são instalados e atualizados de maneira diferente dos service workers da Web. 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. Os service workers em páginas da Web ou apps da Web registram service workers primeiro detectando recursos para serviceWorker
em navigator
e depois chamando register()
dentro da 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 para importar scripts em um worker de serviço: a instrução import
e o método importScripts()
. Não há suporte para import()
, que geralmente é chamado de importação dinâmica.
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 faria em um worker de serviço 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 worker de serviço precisa fazer parte do pacote de extensão.