为什么我的PWA在Lighthouse测试中”安装提示”评分不达标?
我在开发一个电商网站的PWA,Lighthouse测试其他项都拿了满分,但”安装提示”一直显示0分。明明已经按照文档配置了manifest.json和service worker,为什么还是不行?
尝试过这样设置manifest:
{
"short_name": "MyShop",
"name": "MyShop Online",
"icons": [{
"src": "/images/icon-192.png",
"sizes": "192x192",
"type": "image/png"
}],
"start_url": "/",
"display": "standalone"
}
但控制台提示”未检测到有效的服务工作者”
service worker代码是这样写的:
if ('serviceWorker' in navigator) {
window.addEventListener('load', () => {
navigator.serviceWorker.register('/sw.js')
.then(reg => console.log('SW registered', reg))
.catch(err => console.log('SW failed', err));
});
}
页面加载时确实在控制台看到注册成功的日志
错误提示显示:
"未能检测到有效的服务工作者,无法控制页面"
明明服务已经注册成功,哪里出问题了?
或者在 service worker 文件末尾加一句:
另外,manifest.json 中最好加上 theme_color,虽然不强制,但缺失可能影响评分。还有,检查一下你的 service worker 文件是否真的在根目录下,路径是否正确,有没有 404。复制过去试试。
最后,确保你的页面是通过 HTTPS 访问的,否则 service worker 无法生效。开发阶段可以用 localhost,但上线必须 HTTPS。Lighthouse 在评分时会模拟真实环境,如果协议不对,评分自然不达标。