我分叉(未弹出)创建 React App 5 并对其进行了轻微修改以适合我的应用程序:我将
PUBLIC_URL
更改为 file://build/
(我有一个使用 file://
加载 HTML 文件的 Electron 应用程序,但这应该是'没有任何区别)。
当我这样做时,当我在 webpack-dev-server 5 运行时编辑文件时,webpack 5 的热模块替换会无限地重新加载窗口,而不是仅重新加载窗口一次。
我查看了 HMR 的源代码,当 webpack-dev-server 客户端加载时,它会获取包的当前哈希值,然后 HMR 告诉客户端新的哈希值,然后进行比较,如果不同,则会触发HMR 替换或整页重新加载(这发生在我身上,因为这是我的
src/index
文件)。
由于某种原因,初始哈希永远不会更新为新哈希,因此当它进行比较时它总是失败,因此无限地重新加载。
为什么会发生这种情况?我应该能够将
PUBLIC_URL
更改为结尾带有斜杠的任何内容。
问题是浏览器缓存了捆绑 JS 文件,因此它永远不会有用于相等性检查的新哈希值。
默认情况下,webpack-dev-server 不会缓存捆绑文件。