Невозможно настроить сервис-воркер в angular js

Я делаю прогрессивное приложение Angular. Я делаю с сервис-воркерами и получаю сообщение об ошибке в интерфейсе командной строки -

Error: Expected to find an ngsw-config.json configuration file in the /home/nancy/Desktop/beautyOfSoul folder. Either provide one or disable Service Worker in your angular.json configuration file.

Я имею дело с Angular 6. Я знаю, что файл angular.json должен содержать "serviceWorker": true, но я не могу найти ничего подобного ниже в моем файле angular.json, где я могу написать "serviceWorker": true.

{ 
  "apps": [{ 
    ..., 
    "serviceWorker": true
  }]
}

Мой файл angular.json выглядит следующим образом:

  {
  "$schema": "./node_modules/@angular/cli/lib/config/schema.json",
  "version": 1,
  "newProjectRoot": "projects",
  "projects": {
    "beautyOfSoul": {
      "root": "",
      "sourceRoot": "src",
      "projectType": "application",
      "prefix": "app",

      "schematics": {
        "@schematics/angular:component": {
          "styleext": "scss"
        }
      },
      "architect": {
        "build": {
          "builder": "@angular-devkit/build-angular:browser",
          "options": {
            "outputPath": "dist/beautyOfSoul",
            "index": "src/index.html",
            "main": "src/main.ts",
            "polyfills": "src/polyfills.ts",
            "tsConfig": "src/tsconfig.app.json",
            "assets": [
              "src/favicon.ico",
              "src/assets", 
  "src/assets/manifest.json"
            ],


            "styles": [
              "src/styles.scss"
            ],
            "scripts": []
          },
          "configurations": {
            "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      
           }
          }
        },
        "serve": {
          "builder": "@angular-devkit/build-angular:dev-server",
          "options": {
            "browserTarget": "beautyOfSoul:build"
          },
          "configurations": {
            "production": {
              "browserTarget": "beautyOfSoul:build:production"
            }
          }
        },
        "extract-i18n": {
          "builder": "@angular-devkit/build-angular:extract-i18n",
          "options": {
            "browserTarget": "beautyOfSoul:build"
          }
        },
        "test": {
          "builder": "@angular-devkit/build-angular:karma",
          "options": {
            "main": "src/test.ts",
            "polyfills": "src/polyfills.ts",
            "tsConfig": "src/tsconfig.spec.json",
            "karmaConfig": "src/karma.conf.js",
            "styles": [
              "src/styles.scss"
            ],
            "scripts": [],
            "assets": [
              "src/favicon.ico",
              "src/assets"
            ]
          }
        },
        "lint": {
          "builder": "@angular-devkit/build-angular:tslint",
          "options": {
            "tsConfig": [
              "src/tsconfig.app.json",
              "src/tsconfig.spec.json"
            ],
            "exclude": [
              "**/node_modules/**"
            ]
          }
        }
      }
    },
    "beautyOfSoul-e2e": {
      "root": "e2e/",
      "projectType": "application",
      "architect": {
        "e2e": {
          "builder": "@angular-devkit/build-angular:protractor",
          "options": {
            "protractorConfig": "e2e/protractor.conf.js",
            "devServerTarget": "beautyOfSoul:serve"
          },
          "configurations": {
            "production": {
              "devServerTarget": "beautyOfSoul:serve:production"
            }
          }
        },
        "lint": {
          "builder": "@angular-devkit/build-angular:tslint",
          "options": {
            "tsConfig": "e2e/tsconfig.e2e.json",
            "exclude": [
              "**/node_modules/**"
            ]
          }
        }
      }
    }
  },

  "defaultProject": "beautyOfSoul"
}

Самый простой способ настроить сервис-воркера с Angular - запустить ng add @angular/pwa - он установит для вас все требования.

Michael Doye 13.06.2018 08:53
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Angular и React для вашего проекта веб-разработки?
Angular и React для вашего проекта веб-разработки?
Когда дело доходит до веб-разработки, выбор правильного front-end фреймворка имеет решающее значение. Angular и React - два самых популярных...
Эпизод 23/17: Twitter Space о будущем Angular, Tiny Conf
Эпизод 23/17: Twitter Space о будущем Angular, Tiny Conf
Мы провели Twitter Space, обсудив несколько проблем, связанных с последними дополнениями в Angular. Также прошла Angular Tiny Conf с 25 докладами.
Угловой продивер
Угловой продивер
Оригинал этой статьи на турецком языке. ChatGPT используется только для перевода на английский язык.
Мое недавнее углубление в Angular
Мое недавнее углубление в Angular
Недавно я провел некоторое время, изучая фреймворк Angular, и я хотел поделиться своим опытом со всеми вами. Как человек, который любит глубоко...
Освоение Observables и Subjects в Rxjs:
Освоение Observables и Subjects в Rxjs:
Давайте начнем с основ и постепенно перейдем к более продвинутым концепциям в RxJS в Angular
1
1
841
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

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

ng add  @angular/pwa --project *project-name*

Когда вы запускаете эту команду, помимо изменения файла конфигурации и установки библиотек,

1) он добавит папку manifest.json сразу под "src" (не в активы), и лучше оставить ее по умолчанию, хотя вы можете попытаться отобразить ее оттуда.

2) он добавит ngsw-config.json в корне проекта (родительский каталог src). Это должно быть в этом месте, начиная с Angular 6 (в 5 он был в src, я думаю, который был изменен на корневую папку в 6). Этот файл не был найден в вашем случае, что вызывает проблему. Либо переместите существующий сюда, либо удалите существующий и позвольте предыдущему создать его за вас (что лучше).

Спасибо, Ананд, за ваш ответ, но я уже преобразовал свой проект в приложение PWA с помощью указанной выше команды, и у меня есть все файлы, включая ngsw-config.json, в корне проекта. Я думаю, вы рассказываете о том, как преобразовать приложение Angular в приложение PWA, но мой вопрос совершенно другой. Я интегрирую Firebase и ее сервисы в свое приложение, и я получаю сообщение об ошибке, а не для работника службы PWA.

N Sharma 14.06.2018 17:37

Спасибо, Ананд, за ваш ответ, но я уже преобразовал свой проект в приложение PWA с помощью указанной выше команды, и у меня есть все файлы, включая ngsw-config.json, в корне проекта. Я думаю, вы рассказываете о том, как преобразовать приложение Angular в приложение PWA, но мой вопрос совершенно другой. Я интегрирую Firebase и ее сервисы в свое приложение, и я получаю сообщение об ошибке, а не для работника службы PWA.

N Sharma 14.06.2018 17:38

@NSharma, вы запутались со своим другим вопросом по Firebase :) Пожалуйста, проверьте этот вопрос еще раз. В этом вопросе нет ни слова о Firebase, а ошибка - ngsw-config.json, на которую я дал ответ выше. Если вы уже исправили то же самое и если он соответствует ответу, отметьте его как правильное, чтобы это помогло другим. Я также провел некоторое время с этой ошибкой, поскольку Angular 5-6, местоположение этого файла было изменено.

Anand 14.06.2018 17:58

О да, извиняюсь за ошибку, я ошибся. Большое спасибо :) . Я ценю его.

N Sharma 14.06.2018 18:07

Другие вопросы по теме