webpack - 如何在基于 Create-React-App 的应用程序中配置 Workbox?
问题描述
我正在使用 Create-React-App (CRA),它默认注册服务工作者(使用workbox),并希望尽可能让它们保持启用状态。但是,我绝对不能让我的应用程序加载任何外部源 - 但 CRA 中的 Workbox 默认workbox-sw.js
从 Google CDN 加载(如本问题所示)。
目前我正在使用内容安全策略标头来确保请求被阻止,但这当然会导致错误消息被记录,我可能根本不注册服务工作者。
如何将我的应用程序配置为仅使用本地JS,最好不弹出?
解决方案
使用本地 Workbox 文件而不是 CDN 如果您不想使用 CDN,切换到托管在您自己的域上的 Workbox 文件很容易。
最简单的方法是通过 workbox-cli 的 copyLibraries 命令或从 GitHub Release 获取文件,然后通过 modulePathPrefix 配置选项告诉 workbox-sw 在哪里可以找到这些文件。
如果您将文件放在/third_party/workbox/下,您可以像这样使用它们:
importScripts('/third_party/workbox/workbox-sw.js');
workbox.setConfig({
modulePathPrefix: '/third_party/workbox/'
});
这样,您将只使用本地 Workbox 文件。
推荐阅读
- user-interface - 如何在 TButton 中显示图标?
- c# - TryInvokeMember 上的异步任务(DynamicObject)
- javascript - 尝试学习 React 和 Javascript,但坚持使用这种奇怪的 map 语法并将匿名函数传递给它
- django - Django:将表单添加到我的扩展用户模型
- python - Python 循环一直在 Window 的解释器中停止
- python - 将 pdf 转换为 excel(使用 Camelot 获取特定表格)
- cloudera - Errno 14 PYCURL 错误 6 ;在 Cloudera Manager 7.x 升级中无法解析主机
- javascript - 页面加载到容器中时 UI 滑块不可见
- python - 使用 Seleliu 导入文件
- scala - 如何在处理速率限制时异步发送 HTTP 请求?