Conceptos básicos del service worker de extensiones

Los service workers de la extensión se instalan y actualizan de manera diferente a los service worker web. En esta página, se explican esas diferencias.

Registra service workers

Para registrar un service worker de extensión, especifícalo en el campo "background" del archivo manifest.json. Usa la clave "service_worker", que especifica un solo archivo JavaScript. Los service workers en páginas web o apps web registran service workers primero detectando funciones para serviceWorker en navigator y, luego, llamando a register() dentro de la detección de funciones. Esto no funciona para las extensiones.

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

Importar secuencias de comandos

Existen dos métodos para importar secuencias de comandos a un service worker: la sentencia import y el método importScripts(). Ten en cuenta que no se admite import(), que suele denominarse importación dinámica.

Para usar la sentencia import, agrega el campo "type" a tu manifiesto y especifica "module". Por ejemplo:

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

Luego, usa import como lo harías normalmente. Ten en cuenta que no se admiten aserciones de importación.

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

Usa importScripts() como lo harías en un service worker web.

importScripts('locales.js');

Actualizar

Para actualizar el service worker, publica una versión nueva de la extensión en Chrome Web Store. No puedes evitar esto cargando tu extensión desde un servidor. Por motivos de seguridad, Manifest V3 no admite código alojado de forma remota. Tu service worker debe ser parte del paquete de extensión.