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 正在工作。仅供参考。
我有一个 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 正在工作。仅供参考。