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

相关推荐
RoyLin2 小时前
TypeScript设计模式:装饰器模式
前端·后端·typescript
掘金一周2 小时前
Flutter Riverpod 3.0 发布,大规模重构下的全新状态管理框架 | 掘金一周 9.18
前端·人工智能·后端
一涯2 小时前
页面出现空白区域
前端
spmcor2 小时前
MinIO本地对象存储部署指南
前端
少年纪2 小时前
前端用 pdf.js 将 PDF 渲染到 Canvas 再转图片,文字消失的坑
前端
RoyLin2 小时前
TypeScript设计模式:复合模式
前端·后端·typescript
我是天龙_绍2 小时前
CSS/JS/图片全挂了,部署后页面白屏/资源加载失败?这两个配置项坑了多少人!
前端
我的小月月2 小时前
SQLFE:网页版数据库(VUE3+Node.js)
前端·后端
小高0072 小时前
🌐ES6 这 8 个隐藏外挂,知道 3 个算我输!
前端·javascript·面试