我有一个 Angular 6 应用程序,它可以在使用命令服务时工作并注册 SW,
http-server --port 8080
如您在此处看到的:
但是当我从我的 Node / Express 应用程序中提供文件时,它们应该被提供。服务人员不会注册,尝试从 localhost 和 Heroku 运行应用程序,但它是一样的。应用程序以其他方式工作。知道什么会导致这种情况吗?
我认为这个问题与@angular/cli
注册服务工作者时使用的路径有关,我发现注册服务工作者main.ts
更可靠:
platformBrowserDynamic().bootstrapModule(AppModule).then(() => {
if ('serviceWorker' in navigator && environment.production) {
navigator.serviceWorker.register('ngsw-worker.js');
}
}).catch(err => console.log(err));
或者,查看此最近的评论,您可以手动修改路径app.modules.ts
-ServiceWorkerModule.register('./ngsw-worker.js', { enabled: environment.production })
+ServiceWorkerModule.register('.ngsw-worker.js', { enabled: environment.production })
我也有同样的问题,在本地工作,但不是 herokou,由于网上的各种搜索,我来到了这个页面。
就我而言,我最终通过将 --prod 添加到 ng 构建来解决它。使用--prod,将反映environment.prod.ts中的设置,angular.json中的生产中的“服务工作者”将为true,app.module.ts中的ServiceWorkerModule.register中的“启用”->true,服务人员现在正在工作。供参考。