Angular 7 Не удалось зарегистрировать ServiceWorker: при получении сценария получен неверный код ответа HTTP (404) - PullRequest
0 голосов
/ 30 ноября 2018

Я получаю следующую ошибку

ERROR Error: Uncaught (in promise): TypeError: Failed to register a ServiceWorker: A bad HTTP response code (404) was received when fetching the script.
TypeError: Failed to register a ServiceWorker: A bad HTTP response code (404) was received when fetching the script.

Я использовал приглашение "ng add @ angular / pwa", чтобы добавить свой ngsw-config.json и файл манифеста.Это приглашение также добавило мой "serviceWorker": утверждение true и мой регистр со средой в мой app.module.ts

После проверки правильности добавления всего я запустил команду "ng build --prod", которая успешно скомпилированаи показанный dist был сделан папка dist

Затем я запустил «ng serve --prod», и я получаю ошибки, показанные на изображении errors

Строка, используемая в app.module.ts

ServiceWorkerModule.register('ngsw-worker.js', { enabled: environment.production })

ngsw-configuration:

{
  "index": "/",
  "assetGroups": [
    {
      "name": "app",
      "installMode": "prefetch",
      "resources": {
        "files": [
          "/favicon.ico",
          "/index.html",
          "/*.css",
          "/*.js"
        ]
      }
    }, {
      "name": "icons",
      "installMode": "lazy",
      "updateMode": "prefetch",
      "resources": {
        "files": [
          "/icons/**"
        ]
      }
    }
  ]
}

Размещение serviceWorker true в angular.json:

"configurations": {
            "production": {
              "serviceWorker": true,
              "fileReplacements": [
                {
                  "replace": "src/environments/environment.ts",
                  "with": "src/environments/environment.prod.ts"
                }
              ],

1 Ответ

0 голосов
/ 30 ноября 2018

Поскольку вы упомянули корень как папку dist, ваш файл service-worker.js должен находиться в папке dist после запуска сценария ng build.

Добавьте "precache": "sw-precache --verbose --config=sw-precache-config.js" в ваш объект сценариев package.json.

Затем запустите: ng build --prod --aot, затем npm run precache.Теперь ваш файл service-worker.js будет находиться в папке dist.

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

Но по умолчанию ng serve его не поддерживает.Я предлагаю вам использовать http-server.npm install http-server -g.Тогда http-server ./dist -o.Это открывает ваше приложение в браузере по умолчанию.

...