Событие выборки работника службы, переданное в неправильном типе

#javascript #service-worker

#язык JavaScript #работник сферы услуг

Вопрос:

Я добавляю прослушиватель событий выборки, подобный этому

 self.addEventListener( 'fetch', fetch )  

и вот моя функция извлечения

 const fetch = e =gt; {  console.log({e})  if ( !e.request.url.startsWith( self.location.origin ) || e.request.method !== 'GET' ) return   const save = async res =gt; {  const cache = await caches.open( dynamic )  cache.put( e.request, res )  }   const process = async cached =gt; {  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 )) }  

Когда я смотрю на событие, которое передается, я ожидаю события выборки, но это то, что я вижу

журнал консоли

Его печать объекта запроса после правильного события выборки. Когда я попытаюсь получить доступ к URL-адресу, он, конечно, выдаст ошибку, поскольку он будет эффективно выполнять запрос.request.url

Ответ №1:

В своем process методе вы вызываете fetch функцию с помощью клонированного запроса, который, вероятно Request , вы видите в своей консоли.

 const res = await fetch( e.request.clone() )  

Эта проблема связана с тем , что вызывается ваш пользовательский метод fetch , но в этом случае вы, вероятно, захотите использовать собственный fetch метод. Возможно, вам следует подумать о переименовании вашего пользовательского метода, чтобы предотвратить подобные конфликты.

Комментарии:

1. ах, конечно, большое вам спасибо

2. Всегда пожалуйста 🙂 Пожалуйста, подумайте о том, чтобы проголосовать/принять мой ответ, если вы нашли его полезным 😀