Conceptos básicos del service worker de extensiones

Los service workers de extensiones se instalan y actualizan de forma diferente a los service workers web. En esta página, se explican esas diferencias.

Registra los service workers

Para registrar un servicio de trabajo 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 serviceWorker en navigator y, luego, llamando a register() dentro de la detección de atributos. Esto no funciona para las extensiones.

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

Importa secuencias de comandos

Existen dos métodos para importar secuencias de comandos a un trabajador de servicio: la sentencia import y el método importScripts(). Ten en cuenta que no se admite import(), que a menudo se denomina 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 las aserciones de importación.

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

Usa importScripts() como lo harías en un trabajador de servicio web.

importScripts('locales.js');

Actualizar

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