1

我有一个 Angular 6 应用程序,它可以在使用命令服务时工作并注册 SW, http-server --port 8080如您在此处看到的: 在此处输入图像描述

在此处输入图像描述

但是当我从我的 Node / Express 应用程序中提供文件时,它们应该被提供。服务人员不会注册,尝试从 localhost 和 Heroku 运行应用程序,但它是一样的。应用程序以其他方式工作。知道什么会导致这种情况吗?

在此处输入图像描述

4

2 回答 2

3

我认为这个问题与@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 })
于 2018-06-28T19:18:36.087 回答
0

我也有同样的问题,在本地工作,但不是 herokou,由于网上的各种搜索,我来到了这个页面。

就我而言,我最终通过将 --prod 添加到 ng 构建来解决它。使用--prod,将反映environment.prod.ts中的设置,angular.json中的生产中的“服务工作者”将为true,app.module.ts中的ServiceWorkerModule.register中的“启用”->true,服务人员现在正在工作。供参考。

于 2022-03-05T11:19:32.863 回答