【发布时间】:2021-08-05 08:29:05
【问题描述】:
我正在部署一个使用 CRA(Create-React-App) 生成的项目,并且所有 babel 和 webpack 配置保持不变。
另外,我正在使用 AWS S3 的静态存储桶托管功能部署我的 React 应用程序。
问题是,由于没有包含服务器,每次部署新文件时,都会创建具有随机散列的新块。
当客户端在旧哈希的网站中,并且部署了新哈希时,客户端会收到块加载错误。
为了演示这一点,使用 yarn build 构建项目并转到 /build 文件夹以查看 webpack 生成的块。然后使用serve,我可以演示我的部署将如何在我的本地机器上运行。
yarn serve 被执行后,转到相应的 localhost 来提供构建文件。
然后,在/build/static/js 文件夹中,根据需要重命名每个块文件的哈希值。
不要理会浏览器,然后重新启动yarn serve,它将提供重命名的块文件。
然后回到浏览器,你很可能会得到两个错误:
Uncaught SyntaxError: Unexpected token '<'
Loading Chunk n failed.(missing: ~~)
我认为可以解决这个问题的方法是在发生 ChunkLoadError 时重新加载网页。遗憾的是,window.reload(boolean) 函数已被弃用,仅使用 window.location.reload() 并不能解决此问题。
+) PS。我在一些代码中使用React.Lazy() 实现了代码拆分。
【问题讨论】:
标签: webpack create-react-app webpack-4 chunks