如果在部署Angular应用后发现服务工作者没有更新,可以首先确认浏览器是否缓存了旧服务工作者版本。如果是这样,可以尝试强制浏览器更新服务工作者,方法是在ServiceWorkerRegistration上调用update()方法。例如:
if ('serviceWorker' in navigator) { navigator.serviceWorker.register('/ngsw-worker.js').then(function(registration) { registration.update(); }); }
如果强制更新服务工作者还是没有解决问题,则可以尝试清除浏览器缓存。可以设置Angular服务工作者的版本号(version)来实现此目的。例如:
ng build --prod --output-hashing none --service-worker true --service-worker-config src/service-worker-config.json
其中,service-worker-config.json文件中可以指定版本号:
{ "index": "/index.html", "assetGroups": [ { "name": "app", "installMode": "prefetch", "resources": { "files": [ "/favicon.ico", "/index.html", "/.css", "/.js" ], "version": "v1" // 指定版本号 } } ] }
请注意,在更改服务工作者版本号之后,需要重新部署应用。