我正在尝试使用Angular服务工作者,但在尝试使用它时出现错误。
这些是我的版本:
Angular CLI: 15.2.0
Node: 16.18.1
Package Manager: npm 8.19.2
OS: linux x64
Angular: 15.2.0
... animations, cdk, cli, common, compiler, compiler-cli, core
... forms, localize, material, platform-browser
... platform-browser-dynamic, router, service-worker
Package Version
---------------------------------------------------------
@angular-devkit/architect 0.1502.0
@angular-devkit/build-angular 15.2.0
@angular-devkit/core 15.2.0
@angular-devkit/schematics 15.2.0
@schematics/angular 15.2.0
rxjs 6.6.7
typescript 4.8.4
当我尝试在一个函数中使用swPush时:
subscribeToNotifications() {
console.log('subscribeToNotifications: ');
this.swPush.requestSubscription({
serverPublicKey: VAPID.publicKey
})
.then(sub => {
console.log('User accepts: ', sub);
this.alertService.success('Your browser will show up our notifications', AlertOptions.options)
})
.catch(err => console.error("Could not subscribe to notifications", err));
}
然后我收到了这个错误:
Service worker registration failed with: TypeError: ServiceWorker script at http://localhost:<port>/<out-path>/ngsw-worker.js for scope http://localhost:<port>/<out-path>/ encountered an error during installation.
我已经按照这里发布的官方指南进行了操作,但是无法使其工作。
ngsw.json
和ngsw-worker.js
在angular.json
>outputPath
中设置的路径下生成。我们称之为out-path。
angular.json
和package.json
文件似乎被正确覆盖,我的app.module.ts
看起来像这样:
...
OverlayModule,
ServiceWorkerModule.register('/<out-path>/ngsw-worker.js', {
enabled: true, // should be environment.production
// Register the ServiceWorker as soon as the application is stable
// or after 30 seconds (whichever comes first).
registrationStrategy: 'registerWhenStable:30000'
})
...
所有配置文件看起来都很正常,但由于某些原因,我无法注册服务工作器。
我使用 ng serve --proxy-config proxy.conf.js
启动应用程序。
我想在开发模式下运行它,但如果有人知道如何在生产环境中使其工作,那也可以。
更新
我已将 Angular 从 v13 升级到最新的 v15.0.2。