Angular - сервисные работники, вызывающие сбой загрузки - PullRequest
0 голосов
/ 29 июня 2018

Мое приложение angular 6 использует Uppy (XHRUpload) для загрузки файлов. Загрузка файлов происходит на другой поддомен.

Загрузка отлично работает на локальном хосте (с отключенным сервисным работником), но когда я пытаюсь загрузить файлы с включенным сервисным работником, он работает только для файлов небольшого размера (несколько мегабайт) и не работает для других.

Похоже, что сервисный работник ждет ответа на вызов загрузки API, и если он не возвращается в течение нескольких секунд (для больших файлов), то происходит сбой, как я вижу в инструментах разработчика.

Вот мой ngsw-config.json

{
  "index": "/index.html",
  "assetGroups": [
    {
      "name": "app",
      "installMode": "prefetch",
      "resources": {
        "files": [
          "/favicon.ico",
          "/index.html",
          "/*.css",
          "/*.js"
        ]
      }
    },
    {
      "name": "assets",
      "installMode": "lazy",
      "updateMode": "prefetch",
      "resources": {
        "files": [
          "/assets/**"
        ],
        "urls": [
          "https://fonts.googleapis.com/**",
          "https://fonts.gstatic.com/**"
        ]
      }
    }
  ]
}

1 Ответ

0 голосов
/ 31 июля 2018

Возможно, вы захотите исключить этот путь для кэширования / обработки работником службы.

Либо в ngsw-config.json поставить маршрут к "navigationUrls" .

Или, если можете, поместите конечную точку API загрузки файлов на маршрут, который начинается с (или имеет) __ (что является двойным подчеркиванием) в пути. По умолчанию угловой сервисный работник должен рассматривать это как navigationUrl, это то, что генерируется в ngsw.json:

  "navigationUrls": [
{
  "positive": true,
  "regex": "^\\/.*$"
},
{
  "positive": false,
  "regex": "^\\/(?:.+\\/)?[^/]*\\.[^/]*$"
},
{
  "positive": false,
  "regex": "^\\/(?:.+\\/)?[^/]*__[^/]*$"
},
{
  "positive": false,
  "regex": "^\\/(?:.+\\/)?[^/]*__[^/]*\\/.*$"
}
]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...