Ошибки поддоменов хостинга firebase с работниками службы - PullRequest
0 голосов
/ 12 июля 2020
Framework: Ionic, Angular
Stages: Test, Production
Hosting: Firebase

Сегодня я сделал PWA из этого приложения и развернул его для тестирования и производства envs. Пока продакшн работает нормально, тест вызывает у меня головную боль. Каждый env имеет три поддомена:

Производство (все в порядке)

Тест

  • https://test.web.app/ - ОПРЕДЕЛЯЕТ ИНОГДА service worker - ngsw присутствует в источниках
  • https://test.firebaseapp.com/ - обнаруживает НЕ сервис-воркера - ngsw НЕ присутствует в источниках
  • https://test.domain.ch/ - обнаруживает НЕ сервис-воркер - ngsw НЕ присутствует в источниках

Если сервис-воркер не обнаружен, возникает ошибка:

Соответствующий сервис-воркер не обнаружен. Возможно, вам потребуется перезагрузить страницу или убедиться, что область действия сервис-воркера для текущей страницы включает область и начальный URL-адрес из манифеста.

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)"
        ]
      }
    }
  ]
}

firebase. json

{
  "hosting": {
    "public": "www",
    "ignore": [
      "firebase.json",
      "**/.*",
      "**/node_modules/**"
    ],
    "rewrites": [
      {
        "source": "**",
        "destination": "/index.html"
      }
    ],
    "headers": [
      {
        "source": "**",
        "headers": [
          {
            "key": "Cache-Control",
            "value": "no-cache, no-store, must-revalidate"
          }
        ]
      }
    ]
  }
}

angular. json

    "test": {
      "optimization": true,
      "outputHashing": "all",
      "sourceMap": false,
      "extractCss": true,
      "namedChunks": false,
      "aot": true,
      "extractLicenses": true,
      "vendorChunk": false,
      "buildOptimizer": true,
      "budgets": [
        {
          "type": "initial",
          "maximumWarning": "2mb",
          "maximumError": "5mb"
        }
      ],
      "serviceWorker": true,
      "ngswConfigPath": "ngsw-config.json"
    },
    "production": {
      "fileReplacements": [
        {
          "replace": "src/environments/environment.ts",
          "with": "src/environments/environment.prod.ts"
        }
      ],
      "optimization": true,
      "outputHashing": "all",
      "sourceMap": false,
      "extractCss": true,
      "namedChunks": false,
      "aot": true,
      "extractLicenses": true,
      "vendorChunk": false,
      "buildOptimizer": true,
      "budgets": [
        {
          "type": "initial",
          "maximumWarning": "2mb",
          "maximumError": "5mb"
        }
      ],
      "serviceWorker": true,
      "ngswConfigPath": "ngsw-config.json"
    },

Есть идеи, что мне не хватает?

1 Ответ

0 голосов
/ 16 июля 2020

В тестовой конфигурации не определялась замена файлов. Поскольку заменить нечем, это тоже, на мой взгляд, правильно. В любом случае, добавив fileReplacements, это сработало:

"fileReplacements": [
    {
      "replace": "src/environments/environment.ts",
      "with": "src/environments/environment.ts"
    }
],
...