我最近正在研究渐进式 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 添加到我的主屏幕时,它显示以下错误:“无法安装站点:未检测到匹配的服务工作者。您可能需要重新加载页面,或检查当前页面的服务工作者还控制清单中的起始 URL”
在做了一些研究后,我发现人们说将 sw.js 和 manifest.json 放在项目的根目录中。但是当我这样做时,它不会链接文件(当我将它们放在静态文件夹中时,它会链接它们)。顺便说一句,我使用的是标准的 Vue.js 模板。
任何建议如何解决这个问题?