Angular 10 PWA 中 Chrome 更新后的新警告“无法安装站点:页面无法脱机工作。从 Chrome 93 开始...”

Posted

技术标签:

【中文标题】Angular 10 PWA 中 Chrome 更新后的新警告“无法安装站点:页面无法脱机工作。从 Chrome 93 开始...”【英文标题】:New warning "Site cannot be installed: Page does not work offline. Starting in Chrome 93..." after Chrome update in Angular 10 PWA 【发布时间】:2021-06-03 23:09:26 【问题描述】:

Angular 10.2.4 Progressive Web App 在 Apache Tomcat 9.0.41 上通过 HTTPS 提供服务,并且可以离线工作。 更新到 Google Chrome 版本 89.0.4389.72(64 位)后,我们在首次加载时在 DevTools 中收到警告:

无法安装站点:页面无法脱机工作。开始于 Chrome 93,可安装性标准正在改变,本站将 不可安装。见https://goo.gle/improved-pwa-offline-detection 了解更多信息。

另外,在网络选项卡中,我看到两个失败的提取:

Name Path Url Status Type Initiator
example.com / https://example.com (failed) net:ERR_INTERNET_DISCONNECTED fetch ngsw-worker.js:2795
ngsw.json?ngsw-cace-bust=0.8890368493450784 /ngsw.json https://example.com/ngsw.json?ngsw-cache-bust=0.8890368493450784 (failed) fetch ngsw-worker.js:2795

PWA 仍然可以毫无问题地安装。

从头开始创建新的 Angular 项目时也会显示此警告(对于 Angular 版本 10.2.4):

ng new
ng add @angular/pwa

关于导致此警告和失败的网络获取...的任何想法?

【问题讨论】:

我在边缘 89 有同样的错误 嗨。我在 angular github 中发现了这个关于这个警告的问题 github.com/angular/angular/issues/41085 【参考方案1】:

将 'manifest.webmanifest' 中的 'start_url' 更改为 '/index.html' 是我的解决方案 (see issue on Github):

"start_url": "/index.html",

DevTools 中的警告不再出现,我仍然能够安装 PWA。在正式修复之前,我将使用此解决方案作为解决方法。

更新 (17/04/2021):Google 刚刚更新了 blog post 并撤回了更改。该警告将在 Google Chrome v90 周围删除。所以我们可以撤消对 service worker 的更改(因为 Angular service worker 已经离线工作了)。

【讨论】:

我不确定“./index.html”是否应该是正确的值,有人抱怨它。我将它设置为绝对值“/index.html”并且它起作用了。 你完全正确。我把它改成了绝对值。非常感谢!

以上是关于Angular 10 PWA 中 Chrome 更新后的新警告“无法安装站点:页面无法脱机工作。从 Chrome 93 开始...”的主要内容,如果未能解决你的问题,请参考以下文章

如何让 Angular Universal 和 PWA 协同工作?

如何从 PWA 应用主屏幕链接中删除 Chrome 徽标(Android O 预览版)

使用 google-chrome cli 选项打开多个 PWA

在 Angular 中添加 PWA 时超出最大调用堆栈大小

Ionic 4 + Angular 6 PWA 样式不起作用/损坏

Chrome 未在我的 PWA 中显示“添加到主屏幕”