質問タイトルはすべてです。サービスワーカーのフェッチイベントは発生しません
if ('serviceWorker' in navigator) {
navigator.serviceWorker.register('/react-redux/sw.js').then(() => {
console.log('registered');
}, err => console.log(err));
}
EDIT
私は
navigator.serviceWorker.register('swRoot.js').then(() => {
を持つように私は、SWのコードを移動した場合、問題の根はパス
navigator.serviceWorker.register('/react-redux/sw.js')
であるように見えます
すべて正常に動作します。私は'./'
の{scope:
、'/'
、'/react-redux'
を追加するには、/反応-Reduxの中で先頭のスラッシュを落とすから、ちょうど私が上記の考えることができるすべてについて試みたが、どれも(いくつかの原因となるエラーで)働きました。
は、誰もがコンフィグ魔法はドメインのルート以外の場所からサービスワーカーを読み込むことができるように必要なものを知っていますか?
、その後、私の全体のsw.js
self.addEventListener('install', function(event) {
console.log('hello');
try {
console.log('typeof System in install', typeof System);
} catch(e){}
console.log('caching');
event.waitUntil(
caches.open('v1').then(function(cache) {
console.log('caching - getting');
return cache.addAll([
'/react-redux/a.js'
]);
}).catch(function(error){ console.log('error', error) })
);
});
console.log('ADDING FETCH')
self.addEventListener('fetch', function(event) {
console.log('fetching ->', event.request);
event.respondWith(
caches.match(event.request)
.then(function(response) {
// Cache hit - return response
if (response) {
return response;
}
return fetch(event.request);
})
);
});
私は決してconsole.log('fetching ->', event.request);
メッセージが表示されます。私はこの愚かさを加えて問題を強制しようとしました。
setTimeout(() => fetch('/react-redux/foo.css').then(r => console.log(r)), 1000);
setInterval(() => fetch('/react-redux/foo.css').then(r => console.log(r)), 5000);
フェッチイベントが実行されていますが、サービスワーカーはこれらのイベントハンドラには当てはまりません。
さらに、SWが登録されていることが通知され、sw.jsを閉じて再オープンすると、すべてが正しくインストールされていることを示すすべてのロギングステートメントが表示されます。
あなたは証明するためにplnkr http://plnkr.coを作成できますか? – guest271314
@ guest271314 - そうするのは簡単ではないでしょう。私はSWの専門家がコードを見て、その問題が何であるかを知ることができると考えています。 –
plnkrはファイルと 'ServiceWorker'の作成を許可します。 Questionの 'javascript'は再現可能でなければなりません – guest271314