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

相关推荐
jump_jump21 小时前
超长定时器 long-timeout
前端·javascript·node.js
Mintopia1 天前
架构进阶 🏗 从 CRUD 升级到“大工程师视野”
前端·javascript·全栈
Mintopia1 天前
小样本学习在 WebAI 场景中的技术应用与局限
前端·人工智能·aigc
光影少年1 天前
vue生态都有哪些?
前端·javascript·vue.js
一只大头猿1 天前
基于SpringBoot和Vue的超市管理系统
前端·vue.js·spring boot
用户1456775610371 天前
告别繁琐操作!Excel合并原来可以这么轻松
前端
itslife1 天前
vite 源码 - 创建 ws 服务
前端·javascript
懒人Ethan1 天前
解决一个C# 在Framework 4.5反序列化的问题
java·前端·c#
用户1456775610371 天前
Excel合并数据太麻烦?这个神器3秒搞定,打工人必备!
前端
西洼工作室1 天前
前端混入与组合实战指南
前端