生产部署时动态导入 Chunk 失效的实用回退方案
前言与痛点
在单页应用(SPA)的日常开发与运维中,我们经常会遇到因旧版本文件失效导致的用户访问异常。一个典型的场景如下:
- 10:00 —— 部署了版本 V1,用户正常访问并停留在页面 A。
- 11:00 —— 部署了版本 V2。此时,服务器上的 JS 文件带有全新的 Hash 后缀,V1 版本的旧 JS 文件已被新版本覆盖或被清理。
- 11:05 —— 停留在页面 A 的用户尝试点击路由跳转到页面 B。此时浏览器尝试通过
import()动态加载页面 B 对应的 chunk 文件,但服务器上该文件已不存在,导致请求返回 404。
此时,基于 ESM 构建的工具(如 Vite)在控制台通常会抛出以下错误,导致前端路由完全卡死,页面毫无反应:
TypeError: Failed to fetch dynamically imported module: https://.../assets/xxxx.abc123.js在频繁迭代、敏捷部署的业务环境中,如果不妥善处理此类问题,将会导致用户访问失败,严重影响用户体验。
此处内容已隐藏回复后方可阅读。
版权申明
本文系作者 @木灵鱼儿 原创发布在木灵鱼儿站点。未经许可,禁止转载。
暂无评论数据