微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

更改为离线并按刷新 (F5) 时,Angular PWA 不起作用

如何解决更改为离线并按刷新 (F5) 时,Angular PWA 不起作用

我正在使用 angular 制作 PWA 应用。

  • 角度:12

正在发生的事情是:

  • 我转到我的应用程序(在线模式)-> 网络应用程序可以正常显示
  • 打开开发者控制台并将连接更改为离线
  • 按 F5 重新加载应用程序

发生了什么:

  • 下图是我点击重新加载时屏幕上显示内容

enter image description here

这是我的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.json","/*.css","/*.js"
        ]
      }
    },{
      "name": "assets","installMode": "lazy","updateMode": "prefetch","resources": {
        "files": [
          "/assets/**","/*.(eot|svg|cur|jpg|png|webp|gif|otf|ttf|woff|woff2|ani)"
        ]
      }
    }
  ]
}

  • ma​​nifest.json
{
  "name": "ng-main","short_name": "ng-main","theme_color": "#1976d2","background_color": "#fafafa","display": "standalone","scope": "./","start_url": "./","icons": [
    {
      "src": "assets/icons/icon-72x72.png","sizes": "72x72","type": "image/png","purpose": "maskable any"
    },{
      "src": "assets/icons/icon-96x96.png","sizes": "96x96",{
      "src": "assets/icons/icon-128x128.png","sizes": "128x128",{
      "src": "assets/icons/icon-144x144.png","sizes": "144x144",{
      "src": "assets/icons/icon-152x152.png","sizes": "152x152",{
      "src": "assets/icons/icon-192x192.png","sizes": "192x192",{
      "src": "assets/icons/icon-384x384.png","sizes": "384x384",{
      "src": "assets/icons/icon-512x512.png","sizes": "512x512","purpose": "maskable any"
    }
  ]
}

解决方法

在花了数小时寻找解决方案之后 当我使用 ng build --configuration production 构建我的应用程序时,我注意到了。我的 ngsw.json 文件夹中有一个 dist 文件。

但是生成的urls文件中的patternsngsw.json都是空的,如下图:

"assetGroups": [
    {
        "name": "app","installMode": "prefetch","updateMode": "prefetch","cacheQueryOptions": {
            "ignoreVary": true
        },"urls": [],"patterns": []
    },{
        "name": "assets","installMode": "lazy","patterns": []
    }
]

当我将 url 添加到 assetGroups 中缓存并再次尝试时,应用程序运行顺利。 (请看下面的内容)

"assetGroups": [
    {
        "name": "app","urls": [
            "/login","/dashboard"
        ],"patterns": [
            "/*.css","/*.js"
        ]
    },"urls": [
            "/favicon.ico","/index.html","/manifest.webmanifest","/ngsw.json"
        ],"patterns": []
    }
]

我已经向 Angular 团队报告了此事,并已确认为 a bug in Angular 12

总而言之,现在,我必须通过复制 ngsw.json 文件和 assetGroups 中的缓存 URL 来解决方法,在构建应用程序后,我将该 ngsw.json 复制到 {{ 1}} 文件夹。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?