Vite 项目最简单方法解决部署后 Failed to fetch dynamically imported Error问题

问题描述

老板访问前端项目时,如果电脑长时间没刷新,可能会遇到一个常见问题:研发刚部署了新版本,但老板电脑浏览器里的 index.html 还是旧的。于是 index.html 引用的 JS 文件也是旧的 hash 文件,已经不存在了。这时候,如果点击按需加载的模块或路由页面,就会报错:

[TypeError: Failed to fetch dynamically imported module]

相信很多前端都见过。

解决方案

可以用这个 Vite 插件: plugin-web-update-notification

插件功能:部署新版本后,会在页面弹出一个小提示,通知用户点击刷新即可更新页面。

不过,如果用户没注意通知就去点侧边栏其他模块,仍然可能触发 dynamically imported 的报错。以前我都是监听报错再强制刷新页面,现在有更简单的方法,只需要几行代码:

js 复制代码
window.addEventListener('vite:preloadError', (event) => {
  window.location.reload() // 例如,刷新页面
})

官方文档: 构建生产版本 | Vite 官方中文文档

相关推荐
cellurw7 分钟前
20260724 六组件编译收尾与全局构建验证
前端
用户29307509766919 分钟前
用React 完成Todos 的 组件应用:深入理解单向数据流与组件通信
前端
玉宇夕落31 分钟前
React 父子组件通信 Todo List 看透单向数据流与不可变数据
前端
软件开发技术深度爱好者32 分钟前
国际音标魔法实验室工具HTML5实现
前端·html5·英语学习
FogLetter33 分钟前
嘘!WebSocket正在“偷听”你的网络请求——全双工通信的魔法
前端·面试
用户9385156350734 分钟前
从零构建 React Todo 应用:组件化设计与数据流深度解析
前端·javascript
IT_陈寒36 分钟前
Python线程池把我坑惨了,这些盲区你不踩?
前端·人工智能·后端
张人玉1 小时前
基于 Vue 3 + ECharts + Express + SQLite 的可视化大屏与业务管理系统——YOLOv8 高精度车辆行人检测与计数系统
数据库·vue.js·yolo·sqlite·echarts·express
程序员爱钓鱼1 小时前
第一个 Go 程序:Hello World
前端·后端·go
阳光是sunny1 小时前
LangGraph 核心概念详解:从编译到可视化
前端·人工智能·后端