使用uni-app开发小程序,由于微信小程序对代码包体积有大小限制,故分包处理,同时也做了分包预加载
分包前一切功能正常,分包后,一个点击事件,同一个跳转地址,在分包后无法跳转
出现异常:RangeError: Maximum call stack size exceeded
clickEvent(name) {
console.log(name)
this.$Router.push("pages/process/core/"+name)
// uni.navigateTo({url: '/pages/process/core/ProcessList'});
}
很有可能是路由拦截错误导致堆栈溢出,或者分包路由找不到导致疯狂重定向
1.首先本人项目分包配置如下,注意root参数后的分包路径多了个/
,实际是不能加/
的
"subPackages": [
{
"root": "pages/process/",
"pages": [
{
"path": "core/ProcessList",
"name": "ProcessList",
"style": {
"navigationBarTitleText": "流程列表"
}
}
]
}
]
2.路由初始化配置如下,当路由找不到路由地址重定向到404页面,且这里使用命名路由
const router = createRouter({
platform: process.env.VUE_APP_PLATFORM,
routes: [...ROUTES,
{path: '*', redirect:(to)=>{return {name:'404'}}},
]
});
3.由于昨天刚好对pages.json
文件进行动态生成配置,且忽略了name参数,且该name参数用于命名路由使用
module.exports = {
baseUrl: 'pages/error/',
children: [
{
path: '404',
// name: '404',
text: '404',
},
]
}
4.结合如上错误配置,于是造成了如下异常信息:
RangeError: Maximum call stack size exceeded
at RegExp.get global [as global] (<anonymous>)
at RegExp.[Symbol.replace] (<anonymous>)
at String.replace (<anonymous>)
at l (vendor.js?t=wechat&s=1666771492607&v=0305a7a0cd1f60c216184c725a22d2c3:19494)
at f (vendor.js?t=wechat&s=1666771492607&v=0305a7a0cd1f60c216184c725a22d2c3:19494)
at vendor.js?t=wechat&s=1666771492607&v=0305a7a0cd1f60c216184c725a22d2c3:19494
at e (vendor.js?t=wechat&s=1666771492607&v=0305a7a0cd1f60c216184c725a22d2c3:19494)
at e (vendor.js?t=wechat&s=1666771492607&v=0305a7a0cd1f60c216184c725a22d2c3:19494)
at Object.e [as routesForMapRoute] (vendor.js?t=wechat&s=1666771492607&v=0305a7a0cd1f60c216184c725a22d2c3:19494)
at Object.f [as navjump] (vendor.js?t=wechat&s=1666771492607&v=0305a7a0cd1f60c216184c725a22d2c3:19494)(env: Windows,mp,1.06.2209190; lib: 2.25.4)