当前位置:首页 » 《资源分享》 » 正文

前端项目打包后无法加载动态资源(Failed to fetch dynamically imported module)

5 人参与  2024年10月11日 13:20  分类 : 《资源分享》  评论

点击全文阅读


1、问题描述

前端项目打包到生产环境,用户在页面操作时会出现页面报错,无法加载动态资源的错误,但是刷新一下就可以了

2、原因

因为版本更新导致客户端与最新的版本不一致,存在资源未更新的情况,用户在使用的过程中停留在某个页面,没有刷新重新获取资源,就会导致报错

3、解决方法(纯前端,目前来说比较简单的解决方法)

解决思路:通过调用fs库的方法在打包时创建version.json保存版本号,同时在localStorage存储版本号信息,通过对比版本号是否一致强制刷新页面,获取最新的资源防止报错。

第一步:在根目录下创建build文件夹和build.js文件

第二步:在build.js中添加以下代码

// console.log("build---->文件开始执行!");import fs from "fs";import path from "path";function getRootPath(...dir) {  return path.resolve(process.cwd(), ...dir);}const runBuild = async () => {  try {    const OUTPUT_DIR = "dist";    const VERSION = "version.json";    const versionJson = {      version: "V_" + Math.floor(Math.random() * 10000) + Date.now(),    };    fs.writeFileSync(      getRootPath(`${OUTPUT_DIR}/${VERSION}`),      JSON.stringify(versionJson)    );    // console.log(`version file is build successfully!`);  } catch (error) {    // console.error("version build error:\n" + error);    process.exit(1);  }};runBuild();// console.log("build---->文件执行结束!");

第三步:src/router/index.ts 在路由中添加跳转前的判断

注意:添加import.meta.env.VITE_ENV === "PRODUCTION"判断是否为生产环境,开发环境不需要刷新获取资源,登录页也不需要,注意排除,否则会导致用户停留在登录页时,会造成重复登录

import axios from "axios";router.beforeEach((to, from, next) => {  ...    if (from.path !== "/" && import.meta.env.VITE_ENV === "PRODUCTION") {      checkAppNewVersion();    }  ...});// 监听页面打开显示document.addEventListener("visibilitychange", function () {  if (!document.hidden) {    if (import.meta.env.VITE_ENV === "PRODUCTION") {      checkAppNewVersion();    }  }});// 检查服务端是否已经更新,如果更新刷新页面async function checkAppNewVersion() {  const url = `/version.json?t=${Date.now()}`;  let res = null;  try {    res = await axios.get(url);  } catch (err) {    console.error("checkAppNewVersion error: ", err);  }  if (!res) return;  const version = res.data.version;  if (version && version !== localStorage.getItem("version")) {    localStorage.setItem("version", version);    window.location.reload();  }  localStorage.setItem("version", version);}

第四步:package.json 配置打包时执行build.js文件

"type": "module",  "scripts": {    "dev": "-----",    "build": "vite build && node ./build/build.js",    "preview": "------"  },

第五步:准备摸鱼


点击全文阅读


本文链接:http://zhangshiyu.com/post/170534.html

<< 上一篇 下一篇 >>

  • 评论(0)
  • 赞助本站

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

最新文章

  • 祖母寿宴,侯府冒牌嫡女被打脸了(沈屿安秦秀婉)阅读 -
  • 《雕花锦年,昭都旧梦》(裴辞鹤昭都)完结版小说全文免费阅读_最新热门小说《雕花锦年,昭都旧梦》(裴辞鹤昭都) -
  • 郊区41号(许洛竹王云云)完整版免费阅读_最新全本小说郊区41号(许洛竹王云云) -
  • 负我情深几许(白诗茵陆司宴)完结版小说阅读_最热门小说排行榜负我情深几许白诗茵陆司宴 -
  • 九胞胎孕妇赖上我萱萱蓉蓉免费阅读全文_免费小说在线看九胞胎孕妇赖上我萱萱蓉蓉 -
  • 为保白月光,侯爷拿我抵了债(谢景安花田)小说完结版_完结版小说全文免费阅读为保白月光,侯爷拿我抵了债谢景安花田 -
  • 陆望程映川上官硕《我的阿爹是带攻略系统的替身》最新章节阅读_(我的阿爹是带攻略系统的替身)全章节免费在线阅读陆望程映川上官硕
  • 郑雅琴魏旭明免费阅读_郑雅琴魏旭明小说全文阅读笔趣阁
  • 头条热门小说《乔书意贺宴临(乔书意贺宴临)》乔书意贺宴临(全集完整小说大结局)全文阅读笔趣阁
  • 完结好看小说跨年夜,老婆初恋送儿子故意出车祸_沈月柔林瀚枫完结的小说免费阅读推荐
  • 热推《郑雅琴魏旭明》郑雅琴魏旭明~小说全文阅读~完本【已完结】笔趣阁
  • 《你的遗憾与我无关》宋怀川冯洛洛无弹窗小说免费阅读_免费小说大全《你的遗憾与我无关》宋怀川冯洛洛 -

    关于我们 | 我要投稿 | 免责申明

    Copyright © 2020-2022 ZhangShiYu.com Rights Reserved.豫ICP备2022013469号-1