PWA使用pwabuilder代码时service worker的importScripts未定义如何解决
问题原因
- 你额外添加了一行
<script src="/src/pwa/pwabuilder-sw.js"></script>直接在普通网页上下文加载Service Worker文件:importScripts是仅Service Worker运行环境内置的全局API,普通网页主线程上下文不存在这个方法,直接用script标签加载sw文件会触发该报错。 - Service Worker的正确加载方式就是通过
navigator.serviceWorker.register()方法,由浏览器自动在独立的worker线程中加载执行,不需要额外用script标签引入。
修复方案
直接删除代码中多余的script引入行即可,修改后的前端代码如下:
<link rel="manifest" href="/src/pwa/manifest.json"></link> <script> if ('serviceWorker' in navigator) { window.addEventListener('load', function() { navigator.serviceWorker.register('/src/pwa/pwabuilder-sw.js'); })}; </script>
额外优化建议
你当前的manifest.json配置存在一处不规范的地方,可以同步修改避免后续出现异常:
prefer_related_applications字段要求传入布尔值,你当前填写的是字符串"false",改为布尔值false即可。
内容的提问来源于stack exchange,提问作者QQQ
相关产品推荐
相关产品推荐

