【发布时间】:2019-11-22 22:48:09
【问题描述】:
我正在尝试将 pwa 功能添加到在 Angular 8 上运行的网站。 我遵循了很多教程,官方和非官方的,我不明白我做错了什么。
ngsw-config.json 是这样的:
{
"$schema": "./node_modules/@angular/service-worker/config/schema.json",
"index": "/index.html",
"assetGroups": [
{
"name": "app",
"installMode": "prefetch",
"resources": {
"files": [
"/favicon.ico",
"/index.html",
"/manifest.webmanifest",
"/*.css",
"/*.js",
"/*.min.js"
],
"urls": [
"https://fonts.googleapis.com/**"
]
}
}, {
"name": "assets",
"installMode": "lazy",
"updateMode": "prefetch",
"resources": {
"files": [
"/assets/**",
"/*.(eot|svg|cur|jpg|png|webp|gif|otf|ttf|woff|woff2|ani)"
]
}
}
]
}
我可以在 Chrome 开发控制台的应用程序选项卡中看到服务工作者已注册并正在运行。
但我有两个主要问题。
好像索引页无法服务,service worker 还在注册并运行。
我可以在在线模式下看到我从 Service Worker 获取索引页面,那么为什么它在离线模式下不起作用?
- 在在线模式下,我可以从网络选项卡中看到每个请求都被缓存,即使是来自 api 的请求。但是我没有在 ngsw-config.json 中配置 dataGroups 那么为什么会这样呢? 未在assetGroups的url数组中指定的外部js文件也是如此。
该网站可以在这里测试:https://dev.ecni.fr/
谢谢!
编辑: 在运行 Windows 的两台计算机上尝试使用不同的最新浏览器时出现同样的问题。 但是,在 mac 上使用 chrome 可以正常工作。 windows 电脑怎么了?
【问题讨论】:
-
Linwe,我也遇到了同样的问题,去clubup.it 时看到同样的问题,就像你一样。你找到解决方案了吗?
-
我可以找到url_of_site/ngsw/state 的问题。我可以看到所提供的 index.html 的哈希值与缓存的哈希值不同。然后我对比了2个文件,发现是chrome扩展(卡巴斯基杀毒)在每个页面都加了一个小js代码导致的,然后文件不完全一样,hash不匹配。它导致服务人员无法做它的事情。
标签: angular service progressive-web-apps offline worker