【发布时间】:2020-12-04 11:07:08
【问题描述】:
我已经用vue 构建了一个PWA。在开发中一切正常,当我部署到 chrome 网络服务器时。 Service Worker 已注册并正在运行。到目前为止一切顺利。
当我部署到生产环境时,Service Worker 没有运行,因为 scope 或 start_url 与 manifest.json 不匹配(这是 google 开发工具告诉我的)。
我相信这是因为我在历史模式下运行 vue-router 并且在生产环境中运行了一个 .htaccess 文件以按照建议的 here 重写规则。
我还对此进行了测试,以在 vue-router 中切换回哈希模式并再次部署到生产环境。然后 service worker 就可以正常工作了。
为了克服这个问题,我尝试将manifest.json 中的范围设置为index.html:
register(`${process.env.BASE_URL}service-worker.js`, {
registrationOptions: { scope: 'index.html' },
ready () {
console.log(
'App is being served from cache by a service worker.\n'
)
}
})
manifest.json 也一样:
{
"name": "myapp",
"short_name": "myapp",
"theme_color": "#4DBA87",
"icons": [
{ "src": "./img/icons/android-chrome-192x192.png", "sizes": "192x192", "type": "image/png" },
{ "src": "./img/icons/android-chrome-512x512.png", "sizes": "512x512", "type": "image/png" },
{ "src": "./img/icons/android-chrome-maskable-192x192.png", "sizes": "192x192", "type": "image/png", "purpose": "maskable" },
{ "src": "./img/icons/android-chrome-maskable-512x512.png", "sizes": "512x512", "type": "image/png", "purpose": "maskable" }
],
"start_url": "index.html",
"scope": "index.html",
"orientation": "portrait",
"display": "standalone",
"background_color": "#000000"
}
但 chrome 仍然给我关于范围不同步的消息。
对此有什么想法吗?
【问题讨论】:
-
有同样的问题.. .htaccess 在服务人员中给出 403 错误。你解决了吗?
-
@Jos Faber 不,我在
vue-router切换回哈希模式
标签: apache vue.js vue-router progressive-web-apps