我尝试了互联网上所有关于如何将 PWA 添加到 Angular 项目的解决方案,但仍然在 Chrome Dev Tools 中,没有注册服务 worker 。
我确实运行了 ng add @angular/pwa
,使用 ng build --prod
和 http-server -o
仍然没有服务 worker 注册。它也没有添加 @angular/service-worker 包,也没有 Manifest.json 文件,就像它应该在整个互联网上显示的那样。
我还尝试使用预装了 ng new myProject --service-worker
的 PWA 创建一个新项目,但同样无法正常工作。
我什至试过像下面这样注册服务:
if(导航器中的'serviceWorker'){
window.addEventListener('load', function() {
navigator.serviceWorker.register('/service-worker.js');
});
旁注:当我运行 ng add @angular/pwa
时,我收到一条消息“Path '/ngsw-config.json' already exist”,所以我发现该文件位于 < em>@schematics 包。该脚本只添加了一个 @angular/pwa 包,它与 Angular PWA 文档无关。
这是我的环境:
Angular 6.1.2
Angular CLI: 6.1.3
Node 8.11.3
NPM 5.6.0
我需要做什么才能获得普通的 PWA Angular 项目?
最佳答案
这是新版本的@angular/pwa
包,有一些bug。所以运行 ng add @angular/pwa@0.6.8
非常适合我。
在本地测试 Service Worker:如果您将 Firebase 添加到您的项目(托管),您可以运行 ng build --prod
,然后运行 firebase serve
。当你没有 Firebase 时,你可以运行 ng build --prod
,cd 到 dist 文件夹(取决于你的配置)然后运行 http-server -o
.如果您没有 http-server
模块,请通过运行 npm i -g http-server
关于Angular 6.1.2 PWA 不工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51867392/