4

私は最近、プログレッシブ Web アプリケーションに飛び込んでいます。manifest.json と sw.js を次のようにリンクしました。

index.html で

<link rel="manifest" href="<%= htmlWebpackPlugin.files.publicPath %>static/manifest.json">

そして私のmain.jsで

if('serviceWorker' in navigator) {
        const messaging = firebase.messaging()

        navigator.serviceWorker.register('/static/sw.js').then((registration) => {
            messaging.useServiceWorker(registration)
            console.log('Service Worker registered')
        }).catch((error) => {
            console.log('Service Worker failed to register')
        })
    }

動作しているように見えますが、DevTools を使用して webapp をホーム画面に追加しようとすると、次のエラーが表示されます:「サイトをインストールできません: 一致する Service Worker が検出されませんでした。現在のページの Service Worker も、マニフェストから開始 URL を制御します"

いくつかの調査を行った後、sw.js と manifest.json をプロジェクトのルートに配置すると言う人がいることがわかりました。しかし、そうすると、ファイルはリンクされません(静的フォルダーに配置すると、リンクされます)。ちなみに、私は標準の Vue.js テンプレートを使用しています。

これを修正する方法はありますか?

4

1 に答える 1