Agrego un detector de eventos de búsqueda como este
self.addEventListener( 'fetch', fetch )y aquí está mi función de búsqueda
const fetch = e => { console.log({e}) if ( !e.request.url.startsWith( self.location.origin ) || e.request.method !== 'GET' ) return const save = async res => { const cache = await caches.open( dynamic ) cache.put( e.request, res ) } const process = async cached => { if ( cached ) return cached const res = await fetch( e.request.clone() ) if ( res ) await save( res.clone() ) return res } e.respondWith( caches.match( e.request ).then( process )) }Cuando miro el evento que se está pasando, espero un evento de búsqueda, pero esto es lo que veo
Está imprimiendo un objeto de solicitud después del evento Fetch correcto. Cuando intento acceder a la URL, por supuesto arrojará un error, ya que efectivamente estará haciendo request.request.url
En su método de process , está llamando a la función de fetch utilizando una Solicitud clonada, que probablemente sea la Request que ve en su consola.
const res = await fetch( e.request.clone() ) Este problema se debe a que su método personalizado se llama fetch , pero en este caso probablemente desee utilizar el método de fetch nativo. Tal vez debería considerar cambiar el nombre de su método personalizado para evitar conflictos como este.