Oracle Jet中CoreRouter调用reconfigure提示不是函数如何解决
问题原因及修复方案
版本不兼容
CoreRouter的reconfigure方法仅在 Oracle JET 11.0.0及更高版本 中提供,若项目使用JET 10.x或更低版本,该API不存在,会直接抛出类型错误。
可先查看项目package.json中@oracle/oraclejet依赖的版本号:
- 版本低于11:升级JET版本,或改用旧版本兼容方案:销毁原有CoreRouter实例,传入完整的新路由配置重新初始化
- 版本符合要求:继续排查以下问题
this指向异常
如果在登录异步回调中调用该方法,普通函数的this指向会偏移,无法正确获取到AppController上的router实例。可通过箭头函数或者提前缓存this解决:
const self = this; // 登录请求回调示例 login().then(() => { // 合并原有路由和新增的受保护路由 const fullRoutes = [ { path: '', redirect: 'accounts' }, { path: 'login', detail: { label: 'Login', iconClass: 'oj-ux-ico-information-s' } }, { path: 'accounts' }, { path: 'new' } ]; self.router.reconfigure(fullRoutes, {path: 'accounts'}); })
参数使用错误
reconfigure的第一个参数为全量路由配置,不是增量添加的路由,直接传入新路由会覆盖原有登录相关配置,导致路由异常。
另外调用reconfigure后不需要额外执行router.sync(),方法内部会自动处理路由同步,重复调用会引发不必要的跳转异常。
内容的提问来源于stack exchange,提问作者diego soto
相关产品推荐
相关产品推荐

