带有create react app js块的Service Worker错误加载

时间:2018-07-03 11:06:34

标签: reactjs service-worker create-react-app react-loadable

我正在使用Create react app and service worker。但是,有时当我构建一个新版本时,仍然从Service Worker加载了一些js块,这是不应该的吗?而不是加载js文件,它实际上是加载html。清除缓存并重新加载页面后,一切正常。

  1. 我没有在Nginx上缓存服务工作者。每次刷新页面时,都会从服务器加载服务工作者文件。

  2. 我正在使用react-loadable

如何解决此问题?任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:1)

在您提到react-loadable时,我假设您正在应用程序中使用异步组件加载。如果是这样,您可能会面临与我相同的问题。

每当新版本出厂时,都将安装新的Service Worker。默认情况下,直到会话完成(所有选项卡/浏览器关闭),它才会被激活。为了立即激活它,使用了skipWaiting参数,并在sw-precache-webpack-plugin Webpack配置的create-react-app中进行了设置。因此,现在,由于新的服务工作者正在负责,因此将删除旧的服务工作者和所有相关的缓存文件。在大多数情况下,这很好,但在处理异步组件加载时却不是。在这种情况下,我们不希望删除旧的块,因为我们的应用程序正在引用它们。为此,我们需要在skipWaiting: false中设置sw-precache-webpack-plugin

更多信息可以在this线程中找到。