Webpack 如何在创建基于React应用程序的应用程序中配置Workbox?
我正在使用CreateReact应用程序(CRA),它默认情况下注册服务工作人员(使用),如果可能的话,我想让他们保持启用状态。然而,我绝对不能允许我的应用加载任何外部源,但是CRA中的Workbox默认从Google CDN加载Webpack 如何在创建基于React应用程序的应用程序中配置Workbox?,webpack,service-worker,create-react-app,Webpack,Service Worker,Create React App,我正在使用CreateReact应用程序(CRA),它默认情况下注册服务工作人员(使用),如果可能的话,我想让他们保持启用状态。然而,我绝对不能允许我的应用加载任何外部源,但是CRA中的Workbox默认从Google CDN加载Workbox sw.js(如中所示) 目前,我正在使用以确保请求被阻止,但这当然会导致记录错误消息,而且我可能根本不注册服务人员 如何将我的应用程序配置为仅使用本地JS,最好不弹出?使用本地Workbox文件而不是CDN 如果您不想使用CDN,那么切换到托管在您自己域
Workbox sw.js
(如中所示)
目前,我正在使用以确保请求被阻止,但这当然会导致记录错误消息,而且我可能根本不注册服务人员
如何将我的应用程序配置为仅使用本地JS,最好不弹出?使用本地Workbox文件而不是CDN 如果您不想使用CDN,那么切换到托管在您自己域上的Workbox文件就足够容易了 最简单的方法是通过workbox cli的copyLibraries命令或GitHub版本获取文件,然后通过modulePathPrefix配置选项告诉workbox sw在哪里可以找到这些文件 如果将文件放在/third\u party/workbox/下,您可以这样使用它们:
importScripts('/third_party/workbox/workbox-sw.js');
workbox.setConfig({
modulePathPrefix: '/third_party/workbox/'
});
这样,您将只使用本地Workbox文件
fore reference我没有找到合适的解决方案,因此我最终使用了两种机制来实现类似的效果:
解决方案的第一部分有点难看,我仍然对更好的方法感兴趣,但这是我在不弹出CRA的情况下能找到的最好方法。@sancelot谢谢,但是-我把这个放在哪里?package.json、registerServiceWorker.js或其他地方?在我可以在Create React应用程序中编辑的任何文件中,我都没有看到对
workbox
的任何引用。。。我遗漏了什么吗?这条线索在sancelot解释了它。我认为这条线索解释得不够充分。有人能在Stackoverflow中发布这个问题的答案吗?非常感谢。我很好奇,这是否是一般社区的建议?我认为CRA将提供一个更优雅的解决方案,将Workbox库绑定到我的JS包中。。。
sed -i -e 's#https://storage[.]googleapis[.]com/workbox-cdn/releases/[0-9.]*/workbox-sw.js#/workbox/workbox-sw.js#g' build/service-worker.js