Angular 6 个 PWA 节点不工作

Angular 6 PWA with Node not working

我有一个 Angular 6 应用程序,它可以运行并在使用时注册软件 http-server --port 8080 命令,如您所见:

但是当我从我的 Node / Express 应用程序提供文件时,它们应该被提供。服务工作者不会注册,尝试 运行 来自 localhost 和 Heroku 的应用程序,但它是一样的。应用程序以其他方式工作。知道是什么原因造成的吗?

我认为这个问题与@angular/cli在注册service worker时使用的路径有关,我发现在main.ts中注册service worker更可靠:

platformBrowserDynamic().bootstrapModule(AppModule).then(() => {
  if ('serviceWorker' in navigator && environment.production) {
    navigator.serviceWorker.register('ngsw-worker.js');
  }
}).catch(err => console.log(err));

或者,看this recent comment可以手动修改app.modules.ts中的路径

-ServiceWorkerModule.register('./ngsw-worker.js', { enabled: environment.production })
+ServiceWorkerModule.register('.ngsw-worker.js', { enabled: environment.production })

我也有同样的问题,在本地有效,但在 herokou 无效,由于在网上进行了各种搜索,我来到了这个页面。

就我而言,我最终通过在 ng 构建中添加 --prod 解决了这个问题。使用 --prod,将反映 environment.prod.ts 中的设置,angular.json 中生产中的“服务人员”将是真实的,ServiceWorkerModule.register 中的 "enabled" -> true =14=],Service Worker 正在工作。仅供参考。