Теперь я знаю, что существует миллион сообщений об отсутствии провайдеров для того или иного сервиса, я знаю, что для этого нужно обратиться к провайдерам, пожалуйста, прочитайте весь мой пост.
В основном я пытаюсь использовать SwUpdate
чтобы проверить, есть ли обновление, если это так, обновите браузер:
import { SwUpdate } from '@angular/service-worker';
...
export class ...
constructor(
private _swUp: SwUpdate
){}
ngOnInit() {
this.checkForUpdate();
}
checkForUpdate() {
if (this._swUp.isEnabled) {
this._swUp.available
.subscribe(() => {
window.location.reload();
});
}
}
теперь я зарегистрировал свой сервисный работник:
import { ServiceWorkerModule } from '@angular/service-worker';
...
imports: [
environment.production ? ServiceWorkerModule.register('ngsw-worker.js') : [],
]
теперь, когда я запускаю свое приложение, я получаю этоошибка:
NullInjectorError: No provider for SwUpdate!
, поэтому, очевидно, я пытаюсь добавить его в массив поставщиков в модуле моего компонента:
import { ServiceWorkerModule, SwUpdate } from '@angular/service-worker';
...
imports: [
environment.production ? ServiceWorkerModule.register('ngsw-worker.js') : [],
],
providers: [
SwUpdate
]
теперь это должно работать, но теперь на этот разкогда я запускаю приложение, я получаю следующую ошибку:
NullInjectorError: No provider for NgswCommChannel!
Теперь, когда я пытаюсь импортировать NgswCommChannel
, я получаю сообщение о том, что его нет в @ angular / service-worker;
Я пробовал гуглить, но нигде не могу найти ссылку на NgswCommChanel
...
Поэтому мой вопрос: как это исправить или как правильно использовать SwUpdate
??
любая помощь будет оценена
РЕДАКТИРОВАТЬ
У меня также есть trЯ сделал это ТОЧНО так же, как это делается в официальных угловых документах, и это дает мне ту же ошибку:
constructor(
updates: SwUpdate
) {
updates.available
.subscribe(() => {
updates.activateUpdate()
.then(() => document.location.reload());
});
}
РЕДАКТИРОВАТЬ 2 Это то, что я получаю, когда я бегуng -v
Angular CLI: 1.7.4
Node: 10.15.1
OS: win32 x64
Angular: 5.1.2
... animations, common, compiler, compiler-cli, core, forms
... http, platform-browser, platform-browser-dynamic
... platform-server, router
@angular/cli: 1.7.4
@angular/service-worker: 7.2.7
@angular-devkit/build-optimizer: 0.3.2
@angular-devkit/core: 0.3.2
@angular-devkit/schematics: 0.0.40
@ngtools/json-schema: 1.1.0
@ngtools/webpack: 1.10.2
typescript: 2.4.2
webpack: 3.11.0
РЕДАКТИРОВАТЬ 3
При дальнейшем исследовании кажется, что если вы не можете использовать SwUpdate при локальном запуске проекта, я увидел эту статью angular-pwa-pitfalls и существует решение установить ng-toolkit, но это просто позволяет вам построить свой проект и затем запустить фиктивный сервер, который не имеет смысла, потому что я теряю способность развиваться локально, не создавая проектКаждый раз.
РЕДАКТИРОВАТЬ 4
Я изменил свой app.module.ts, чтобы зарегистрировать работника сервиса:
ServiceWorkerModule.register('ngsw-worker.js', { enabled: environment.production })
, но теперь яполучаю целую кучу ошибок
Любые другие предложения будут отличными.
Спасибо