Angular PWA не обновляется в производстве - PullRequest
2 голосов
/ 26 марта 2020

У меня есть PWA в Angular 8. Я добавил $ ng add @angular/pwa, и функциональность PWA, кажется, работает, примите эту проблему: когда я выпускаю sh новую сборку в производство, приложение не обновлено в браузерах пользователей (протестировано на Chrome и мобильном Safari).

Вместо этого, когда пользователь открывает свой браузер для go приложения, он / она увидит предыдущую (не обновленную) версию приложения, которая ранее была в его браузере.

Они увидят более новую версию, только если они обновят sh страницу. Ошибки не отображаются.

Я выполняю sh до производства, используя $ ng build --prod, а затем вставляю сборку в AWS Amplify.

Приложение всегда должно обновляться до новейшей сборки, когда пользователь открывает его в браузере. Этого не происходит.

Я видел обсуждение этого вопроса о переполнении стека в последние несколько лет, например здесь и здесь . Но эти вопросы не получили ответов, и даны советы по внедрению обходных путей.

Какое решение этой проблемы?


В моем случае приложение находится в процессе многократно повторяется, и это тянет много местных активов. Таким образом, пользователь, все еще видящий сборку по прошествии недели go, является серьезной проблемой. Я надеюсь, что это не ожидаемое поведение - b c, который является большим недостатком функциональности PWA, если он есть.

В Angular документах есть некоторое обсуждение «updateMode», но мне кажется, что мои настройки уже установлены для правильной работы, но проблема остается. Вот мой 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"
        ]
      }
    }, {
      "name": "assets",
      "installMode": "lazy",
      "updateMode": "prefetch",
      "resources": {
        "files": [
          "/assets/**",
          "/*.(eot|svg|cur|jpg|png|webp|gif|otf|ttf|woff|woff2|ani)"
        ]
      }
    }
  ]
}
...