web-dev-qa-db-ja.com

ServiceWorkerの登録に失敗しました:スクリプトのフェッチ時に不正なHTTP応答コード(404)を受信しました

プログレッシブウェブアプリケーション(pwa)を作成していて、オフライン機能をテストするためにServiceWorkerを登録しようとしています。フォルダ構造は次のとおりです。

_-- views 
   -- index.pug
-- sw.js
-- public
   -- js
      -- main.js
-- index.js
_

index.jsファイルはサーバーファイルであり、main.jsは各.pugファイルでリンクされているファイルです。サービスワーカーの登録コードを埋め込みました。コードは次のようになります。

_if ('serviceWorker' in navigator) {
    window.addEventListener('load', function() {
        navigator.serviceWorker.register('./sw.js').then(function(registration) {
            // Registration was successful
            console.log('Service Worker registration successful with scope: ', registration.scope);

            // console.log('Service Worker registration successful with scope: ', registration.scope);
        }, function(err) {
            // registration failed :(
            console.log('ServiceWorker registration failed: ', err);
        });
    });
}
_

404エラーがローカルホストにポップアップし続け、デプロイされたURLも表示されますが、理由はわかりません。これを解決するにはどうすればよいですか?

_ServiceWorker registration failed:  TypeError: Failed to register a ServiceWorker: A bad HTTP response code (404) was received when fetching the script.
_

ありがとう

ソリューション(更新)-

app.use('/', routes)、またはservice-workerファイルの任意の場所をindex.jsファイルに含めます。

4
f.c

Nodejsサービスワーカーを起動するときにTypeErrorの問題を解決するために私が見つけた唯一の方法は、サービスワーカースクリプトをアプリケーションのルートディレクトリ(私の場合はAmazon EC2 Webサーバーのルート)に配置することです。

エラーメッセージがより説明的であるといいのですが、TypeErrorはそれほど役に立ちません。しかし、この修正は私にとってはうまくいきました。

0
E.Bradford