Обновление angular-cli для служебного работника с неопределенной ошибкой - PullRequest
0 голосов
/ 03 мая 2018

Я следовал официальному руководству angular и успешно установил начальный сервисный работник. Затем я хотел попробовать обновить поведение и получил

TypeError: Невозможно прочитать свойство 'id' из неопределенного

где id ссылается на client.id в методе из ngsw-worker.js

async updateClient(client) {
        // Figure out which version the client is on. If it's not on the latest,
        // it needs to be moved.
        const existing = this.clientVersionMap.get(client.id);
....
}

Шаги, которые я сделал,

  1. Зарегистрируйте ПО, перешли в автономный режим и перезагрузили (работали), закрыли вкладку, но окно оставалось открытым
  2. Обновлен код в app.cmp.html
  3. Перестроенный проект (ng build --prod)
  4. открыл новую вкладку и приложение (могло наблюдать обновление ПО)
  5. перезагрузить приложение
  6. ошибка

Я использую angular-cli 1.7.4, и все угловые библиотеки, включая service-worker, включены в 5.2.10.

Редактировать 1 08.05.2018

На github опубликована проблема в angular-cli 6 https://github.com/angular/angular/issues/23742

Редактировать 2 08.05.2018

Что я мог узнать до сих пор:

ng build --prod не создает новую версию ngsw-worker.js (при перезагрузке новой свежей сборки chrome не отображает «ждать активации»). Когда я перезагружаюсь с или без закрытия предыдущей вкладки, появляется ошибка.

Когда я вручную добавляю что-то в ngsw-worker.js (например, console.log), обычно запускается жизненный цикл, и старый сервисный работник заменяется на «новый».

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

Более того, попытка удалить работника сервиса с помощью Fail-Safe от angular (удаление или переименование ngsw-config) приводит к ошибке сборки.

Ожидается найти файл конфигурации ngsw-config.json в папке / Users / hanche / Desktop / Development / plays / toggl2. Либо предоставьте один, либо отключите Service Worker в файле конфигурации angular.json.

Редактировать 3 & 'Solution' 09.05.2018

Эта проблема должна быть исправлена, если будет принят этот Запрос на извлечение от 1 мая 2018 года.

Между тем, вы можете автоматически отменить регистрацию работника службы, удалив файл ngsw.json из папки dist / и NOT ngsw-config.json, как описано в разделе отказоустойчивости. Смотрите ответ, который я получил здесь .

Кроме того, это также может быть ошибка хрома

Ответы [ 2 ]

0 голосов
/ 09 мая 2018

Мы можем обойти эту ошибку, понизив service.worker с 5.2.10 до 5.2.0 "@angular/service-worker": "5.2.0",

Обновление

После второго развертывания мы столкнулись с той же ошибкой. Теперь мы отменили регистрацию всех сервисных работников в chrome (chrome: // serviceworker-internals /), и теперь, похоже, он работает и с версией 5.2.10. Не знаю, в чем проблема.

0 голосов
/ 07 мая 2018

В нашем случае проблема была решена после обновления до угловой версии 6.0.0. Если это возможно для вашего проекта, попробуйте.

Я посмотрел на ngsw-worker.js, и он немного изменился в 6.0.0 по сравнению с (в нашем случае) 5.2.0.

...