嘿我正在尝试编程我的第一个pwa并遇到以下问题:
当我启动我的网络应用时,我收到以下错误:
无法安装站点:未检测到匹配的服务工作者。您可能需要重新加载页面,或检查当前页面的服务工作者是否也控制清单中的起始URL
我认为我的清单网址是正确的,因为link
的manifest.json
"start_url": ".",
"display": "standalone",
"orientation": "portrait",
"theme_color": "#29BDBB",
"background_color": "#29BDBB"
我注册了我的sw:
if ('serviceWorker' in navigator) {
navigator.serviceWorker.register('./sw.js').then(function(reg) {
console.log('Successfully registered service worker', reg);
}).catch(function(err) {
console.warn('Error whilst registering service worker', err);
});
}
我从here
获得了我的sw所以我想制作一个简单的网络应用程序,我可以用firebase托管。
问题是什么?谢谢你的帮助
答案 0 :(得分:20)
以防万一,使用Angular8 +的其他任何人也会遇到这种情况。您可能需要将注册策略更改为:
imageTokenizer := html.NewTokenizer(htmlStream)
默认情况下,它设置为ServiceWorkerModule.register('ngsw-worker.js', { enabled: environment.production, registrationStrategy: 'registerImmediately' }),
,即没有待处理的任务,事物registerWhenStable
等时。通过将其更改为like setTimeout()
,它将注册您的服务工作者尽快。
只是以为我会分享并添加到这里,因为这使我失去了几天的时间去尝试。
答案 1 :(得分:12)
将服务工作者脚本文件放在网站的根目录下,并将start_url
设置为/
,或将其放在任意位置,并使用scope
属性和{{1} HTTP标头,如my other answer。
答案 2 :(得分:0)
create react app服务工作者仅在生产中生效,因此对其进行构建并在本地提供服务以测试服务工作者是否正常工作。
如果尚未安装,请先安装服务npm:npm i serve -g
然后...
npm run build
serve -s build
答案 3 :(得分:-2)
为了我的工作顺利,将库“ @ angular / service-worker”:“ ^ 7.2.15”更新为版本“ @ angular / service-worker”:“ ^ 8.2.3”
还放置:ServiceWorkerModule.register ('ngsw-worker.js', {enabled: environment.production, registrationStrategy: 'registerImmediately'}),