antd admin框架设置了base路径后无法正常切换问题
背景:框架 antd amin,一般情况下,部署在web的根目录(即:http://hostname:port)下面,可正常切换语种,但是,如何部署在web下的某个目录下时,发现:
1、切换语种时,无法正确路由(菜单中的所有链接还是原来的默认语种,而右上角的选择语类无法正确点击)
2、如果直接在url中修改语种时,可正常路由即:
http://localhost:7000/en/dashboard
修改en
为 zh
是能正常访问的
package.json信息如下
"name": "antd-admin",
"version": "5.1.3",
const basePath = '/myCenterWeb'
export default {
publicPath: `${
basePath}/`,
base: basePath,
...
}
问题分析
1、由上面问题2,可知,路由没有问题可正常访问zh或en的。问题出成菜单中生成的路由没有正常加入相应的语种。
代码分析
// 从路径中提取语种,没有,则提返回默认语种
export const langFromPath = pathname => {
for (const item of languages) {
if (pathname.startsWith(`/${
item}/`)) {
return item
}
}
return defaultLanguage
}
// 为路径添加语种信息前缀
export function addLangPrefix(pathname) {
if (!i18n) {
return pathname
}
const</