プログレッシブウェブアプリケーション(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ファイルに含めます。
Nodejsサービスワーカーを起動するときにTypeErrorの問題を解決するために私が見つけた唯一の方法は、サービスワーカースクリプトをアプリケーションのルートディレクトリ(私の場合はAmazon EC2 Webサーバーのルート)に配置することです。
エラーメッセージがより説明的であるといいのですが、TypeErrorはそれほど役に立ちません。しかし、この修正は私にとってはうまくいきました。