Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

372
Vistas
Errores del trabajador del servicio cuando se reinicia solo en Chrome: no se pudo cargar el script inesperadamente

Problema

  • En Firefox, el trabajador de servicio a continuación se puede instalar, detener e iniciar correctamente.
  • En Chrome, el trabajador de servicio de prueba a continuación instala multas, funciona perfectamente hasta que uno cierra y abre el navegador, o en las herramientas de desarrollo SW hace clic en detener y luego en iniciar.

Introducción

Creé un trabajador de servicio, lo depuré con Chrome en local y funcionó bien. Lo implementé en un sitio web y veo los errores en la imagen a continuación (solo en Chrome, con Firefox funciona bien):

 /static/core.jslib/sw.min.js:1 Failed to load the script unexpectedly /static/core.jslib/sw.min.js:1 Failed to load the script unexpectedly

Con Chrome, si hago clic en iniciar el trabajador del servicio, se detiene de inmediato. Con Firefox se ejecuta un rato antes de detenerse (esperado).

Ambiente

  • SO: Ubuntu 20.04 y en Windows 10
  • navegadores
    • Chrome: versión 97.0.4692.99 (compilación oficial) (64 bits)
    • También ocurre en Chromium 92.0.451598
  • No está en modo sin conexión en Chrome en Network o Application
  • La única pista que tengo es la primera vez que se instala el SW, funciona bien. Pero luego, si cierro el navegador y lo vuelvo a abrir, veo estos errores y el software se detiene. Suena como un problema de estado global, por lo que la variable/objeto no está presente cuando el trabajador se inicia de nuevo, sin embargo, no tengo ningún estado global, como puede ver, solo algunas funciones.
  • Sin extensiones, todo deshabilitado
  • Probado en 2 computadoras diferentes,
  • El sw.min.js a continuación no se minimiza, sino que se pega sin minimizar.

ingrese la descripción de la imagen aquí

He simplificado mi trabajador de servicio a esto, por lo que ahora estoy bastante seguro de que no es mi código, sino algo que Chrome está haciendo:

 / INSTALL ------- async function install() { console.log("SW: Installing ..."); } async function handleInstall(event) { event.waitUntil(install()); } self.addEventListener("install", handleInstall); // ACTIVATE ------- async function activate() { console.log("SW: Activated"); } async function handleActivate(event) { event.waitUntil(activate()); } self.addEventListener("activate", handleActivate); // FETCH ------- async function swFetch(event) { //console.log('SW: FETCH - RELEASE TIMESTAMP', RELEASE_TIMESTAMP) const response = await fetch(event.request); console.log("SW: FETCHED ", event.request.url); return response } async function handleFetch(event) { return event.respondWith(swFetch(event)); } self.addEventListener("fetch", handleFetch);

Nota: Cuando funciona, el archivo sw.min.js aparece debajo de las fuentes (cuando se instala), cierra y abre el navegador nuevamente y luego esto no se muestra: ingrese la descripción de la imagen aquí

PD ejecutándose en Ubuntu 20.04. Tal vez tenga que ver con dónde almacena los trabajadores del servicio en Linux.

Incluso agregué una llamada de búsqueda para obtener el archivo e imprimirlo justo antes de que registre el trabajo del servicio para verificar que pueda acceder al archivo, y siempre está bien:

 Fetched /static/core.jslib/sw.min.js Responsebody: (...)bodyUsed: falseheaders: Headers {}ok: trueredirected: falsestatus: 200statusText: ""type: "basic"url: "https://www.demo..../static/core.jslib/sw.min.js"[[Prototype]]: Response swregister.min.50eb376e2ddc.js:1 SW: Registered - At scope https://www.demo..../ /static/core.jslib/sw.min.js:1 Failed to load the script unexpectedly /static/core.jslib/sw.min.js:1 Failed to load the script unexpectedly

Orden de error

Lo extraño es que el error aparece cuando uno hace clic para navegar a otro lugar. El siguiente registro de la consola se generó de la siguiente manera:

  1. Borró la consola.
  2. Luego hizo clic en un enlace
  3. El error se mostró de inmediato.
  4. Luego muestra la nota sobre la navegación.
  5. Luego registró al trabajador del servicio.

Así que no creo que sea un problema de recuperación, creo que es el almacenamiento interno del archivo del trabajador del servicio, al que Chrome no puede acceder.

ingrese la descripción de la imagen aquí

Elementos internos del trabajador del servicio de Chrome

 chrome://serviceworker-internals/` shows the service worker: Scope: https://www.demo..../ Registration ID: 287 Navigation preload enabled: false Navigation preload header length: 4 Active worker: Installation Status: ACTIVATED Running Status: STOPPED Fetch handler existence: EXISTS Script: https://www.demo..../static/core.jslib/sw.min.js Version ID: 649 Renderer process ID: 0 Renderer thread ID: -1 DevTools agent route ID: -2 Log:

Y si hago clic en start , muestra:

 Console: {"lineNumber":0,"message":"Failed to load the script unexpectedly", "message_level":3,"sourceIdentifier":1,"sourceURL":"https://www.demo.../static/core.jslib/sw.min.js"}

Mientras que los trabajadores de servicios de otras personas comienzan y funcionan por un tiempo.

Encabezados de respuesta

Aquí están los encabezados de respuesta para sw.min.js

 # Here are the response headers for: date: Tue, 25 Jan 2022 18:15:44 GMT etag: "61f03d46-350" last-modified: Tue, 25 Jan 2022 18:11:18 GMT server: notepad.exe service-worker-allowed: /

Manifiesto.json

 { "name": "Cube", "short_name": "Cube", "icons": [ { "src": "/static/core.pwa/img/android-chrome-192x192.png", "sizes": "192x192", "type": "image/png", "purpose": "any" }, { "src": "/static/core.pwa/img/android-chrome-512x512.png", "sizes": "512x512", "type": "image/png", "purpose": "any" }, { "src": "/static/core.pwa/img/maskable_icon.png", "sizes": "1024x1024", "type": "image/png", "purpose": "maskable" } ], "theme_color": "#212121", "background_color": "#ffffff", "display": "standalone", "start_url": "/" }
over 4 years ago · Santiago Trujillo
1 Respuestas
Responde la pregunta

0

Actualizar

La gente de Chromium descubrió que era el encabezado del tipo de contenido MIME: https://bugs.chromium.org/p/chromium/issues/detail?id=1292379#c17

En nginx cambié el encabezado de:

  • content-type: application/javascript; charset=utf-8

para

  • content-type: application/javascript

¡Ahora funciona!

Respuesta original

Al registrar el trabajador del servicio, configuré el tipo como módulo. Aparentemente significa "bloqueo cuando se reinicia" en Chrome.

 const options = { scope: "/", // type: "module", <-- needed to comment this out }; const result = await navigator.serviceWorker.register(swPath, options);

Aparentemente, Chrome no parece admitir trabajadores de servicio de tipo de módulo, cuando revisé la tabla de soporte, parecía haber un buen soporte.

over 4 years ago · Santiago Trujillo Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda