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 官方中文文档

相关推荐
小凡同志5 小时前
React vs Vue:两种前端架构哲学的深度解析
前端·vue.js
miss5 小时前
Vue2 老项目上 TS?这 10 个坑我替你踩了,附完整迁移方案
前端
小码哥_常5 小时前
RecyclerView深坑大揭秘:FlexboxLayoutManager引发的滑动误判
前端
Neptune15 小时前
让我带你迅速吃透React组件通信:从入门到精通(中篇)
前端·react.js·面试
bluceli5 小时前
CSS子选择器与伪类:精准控制元素样式的利器
前端·css
somebody5 小时前
零经验学 react 的第12天 - 表单操作 & watch 监听 & computed 计算
前端
小码哥_常5 小时前
Android 字体字重设置:从XML到Kotlin的奇妙之旅
前端
miss5 小时前
《Nuxt.js入门宝典:1小时从懵逼到实战,真香!》
前端
GISer_Jing5 小时前
AI Agent交互模式深度解析:浏览器书签&插件进行AI对话
前端·人工智能·aigc·交互
ssshooter5 小时前
z-index:不仅仅是“谁在上面”那么简单
前端·css·面试