一秒教你搞定前端打包上传后路由404的问题!

news/2024/11/26 5:38:59/

1、问题描述

前端实现权限管理后,本地路由跳转正常,打包上传线上出现前404找不到路由路径问题

报如下错误:

 2、错误原因

打包之后根路径变化,前端没有将获取到的用户菜单权限中的component进行转换,导致上传后路径错误

3、解决方法(基于Vue3+ts)

step1:

在添加菜单时,不写component的前缀,比如原本前端控制路由时的写法: ×

component: () => import('/@/views/home/index.vue')   或

component: () => import('/@/layout/routerView/parent.vue')

实际添加时,component的正确写法如下:

/home/index.vue   或

/layout/routerView/parent.vue

step2:

在前置路由导航守卫中获取用户的权限后,先获取目录下的 .vue、.tsx 全部文件

/*** 获取目录下的 .vue、.tsx 全部文件* @method import.meta.glob* @link 参考:https://cn.vitejs.dev/guide/features.html#json*/
const layouModules: any = import.meta.glob('../layout/routerView/*.{vue,tsx}');
const viewsModules: any = import.meta.glob('../views/**/*.{vue,tsx}');
const dynamicViewsModules: Record<string, Function> = Object.assign({}, { ...layouModules }, { ...viewsModules });

再遍历菜单权限,将component的值进行转换

/*** 后端路由 component 转换* @param routes 后端返回的路由表数组* @returns 返回处理成函数后的 component*/
export function backEndComponent(routes: any) {if (!routes) return;return routes.map((item: any) => {if (item.component) item.component = dynamicImport(dynamicViewsModules, item.component as string);item.children && backEndComponent(item.children);return item;});
}/*** 后端路由 component 转换函数* @param dynamicViewsModules 获取目录下的 .vue、.tsx 全部文件* @param component 当前要处理项 component* @returns 返回处理成函数后的 component*/
export function dynamicImport(dynamicViewsModules: Record<string, Function>, component: string) {const keys = Object.keys(dynamicViewsModules);const matchKeys = keys.filter((key) => {const k = key.replace(/..\/views|../, '');return k.startsWith(`${component}`) || k.startsWith(`/${component}`);});if (matchKeys?.length === 1) {const matchKey = matchKeys[0];return dynamicViewsModules[matchKey];}if (matchKeys?.length > 1) {return false;}
}

http://www.ppmy.cn/news/426939.html

相关文章

什么是RISC-V

本文转自什么是RISC-V 向作者致敬。 RISC-V读作RISC Five&#xff0c;也即第五代精简指令处理器 什么是RISC和CISC&#xff1f; RISC(精简指令集计算机&#xff0c;Reduced Instruction Set Computer-RISC)和CISC(复杂指令集计算机&#xff0c;Complex Instruction Set Comp…

汉诺塔(Hanoi)问题归纳总结

一.汉诺塔问题及其递归算法 1.问题阐述 经典汉诺塔&#xff1a; 外文算法书对汉诺塔问题的描述&#xff1a; 2.算法步骤 三阶汉诺塔问题解题步骤 共需7步。 四阶汉诺塔问题解题步骤 共需15步 五阶汉诺塔问题解题步骤 可以清晰的看出分治思想以及递归过程 算法采用了分治的…

第五章 政策问题与议程设定

整体架构 第一节 政策问题的概念、属性与分类 第二节 公共问题的提出 第三节 问题认定与政策议程第一节 政策问题的概念、属性与分类 公共问题的形成或认定及其被纳入政府的政策议程是政策制定过程的起点&#xff0c;也是它的一个十 分重要的环节。美国学者邓恩就特别强调问题构…

【时间序列分析】03.正态时间序列与严平稳序列

文章目录 三、.正态时间序列与严平稳序列1.多元统计基础2.多维正态分布与正态时间序列3.严平稳序列回顾总结 三、.正态时间序列与严平稳序列 1.多元统计基础 首先对多元统计中的基本概念作简要介绍。如果有一个 n n n维随机向量 X ( X 1 , ⋯ , X n ) ′ X(X_1,\cdots,X_n) …

从互联网金融平台下架银行存款产品,看金融监管为何越来越严?

最近各大互联网金融平台纷纷下架了银行存款产品&#xff0c;当然这也不是今年监管对于互联网金融的第一次出手了。 前些天蚂蚁集团上市前夕&#xff0c;互联网小额信贷监管环境发生变化&#xff0c;P2P平台的清零等等的。 当然了&#xff0c;有人叫好&#xff0c;说&#xff…

OAuth安全相关问题

初识OAuth 开放授权(OAuth)是一个开放标准,允许用户让第三方应用访问该用户在某一网站上存储的私密的资源(如照片,视频,联系人列表),而无需将用户名和密码提供给第三方应用.目前广泛使用的版本是OAuth 2.0.而OAuth2.0存在认证缺陷-即第三方帐号快捷登录授权可能被劫持。 OAuth…

SQL注入问题

sql注入是一种通过在输入中注入sql语句,来达到攻击数据库的效果。今天使用Java语言,来分析一下sql注入的相关问题。 一、什么是SQL注入 SQL注入即是指web应用程序对用户输入数据的合法性没有判断或过滤不严,攻击者可以在web应用程序中事先定义好的查询语句的结尾上添加额外…

【通信原理】严平稳随机过程 广义平稳随机过程 高斯随机过程

目录 定义介绍 严平稳随机过程&#xff1a; 广义平稳随机过程&#xff1a; 高斯随机过程&#xff1a; 问题解答 Question1&#xff1a;为什么广义平稳随机过程不一定是严平稳随机过程&#xff1f; Question2&#xff1a;为什么高斯过程若是广义平稳的&#xff0c;则也严平稳&a…