3

ServiceWorkerGoogle Chrome v38 で遊んでみました。に設定#enable-experimental-web-platform-featuresし、localhost をセットアップしTrueabout:config、 経由でリクエストを処理しましたhttps://

私のsw.jsファイルには簡単な例が含まれています:

// The SW will be shutdown when not in use to save memory,
// be aware that any global state is likely to disappear
console.log("SW startup");

self.addEventListener('install', function(event) {
  console.log("SW installed");
});

self.addEventListener('activate', function(event) {
  console.log("SW activated");
});

self.addEventListener('fetch', function(event) {
  console.log("Caught a fetch!");
  event.respondWith(new Response("Hello world!"));
});

そして私のapp.jsファイル:

if ('serviceWorker' in navigator) {
    console.log('registering sw.js');
    navigator.serviceWorker.register('/static/js/sw.js').then(function(reg) {
        console.log('Yey!', reg);
    }, function(err) {
        console.log('Boo!', err);
    });
}

私のコンソール出力は次のとおりです。

registering sw.js app.js:27
Boo!
DOMException: The Service Worker installation failed. {message: "The Service Worker installation failed.", name: "AbortError", code: 20, INDEX_SIZE_ERR: 1, DOMSTRING_SIZE_ERR: 2…} app.js:31

この問題をトラブルシューティングする方法はありますか?

4

3 に答える 3

2

Service Worker で開発する場合は、Google Chrome 40 以降 (chrome://flagsいじる必要はありません) を使用してください。Chrome 38 では、一部の Service Worker API に対して非常に予備的なサポートが提供されていた可能性がありますが、API の仕様と成熟度の両方が Chrome 38 以降大幅に変更されています。Chrome 39 についても同様です。

理想的には、開発目的では、実際には現在のGoogle Chrome Canary (41) を使用することをお勧めします。これは、Chrome 40 のブランチ カット以降、エラー メッセージにいくつかの機能強化が行われており、より正確で表現力豊かなエラーが原因を突き止める際に大いに役立つためです。何が問題なの?

于 2014-11-24T15:12:22.517 に答える