Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

生成代码按默认配置提交生成后,前端点击进入菜单目录,控制台中提示“路由错误” #42

Open
djun opened this issue Aug 9, 2023 · 10 comments

Comments

@djun
Copy link

djun commented Aug 9, 2023

系统版本:Windows 11 22H2

Node 版本:v18.16

Go 版本:1.20.7

数据库已使用 MySQL 8,后端 Go 编译正常。

如图所示,生成代码按默认配置提交生成后,前端点击进入菜单目录,控制台中提示“路由错误”

image

请协助解决问题,非常感谢!

@bufanyun
Copy link
Owner

新建个目录试试

@djun
Copy link
Author

djun commented Aug 10, 2023

您好,新建目录后依然是同样情况:

image

@djun
Copy link
Author

djun commented Aug 10, 2023

您好,这边再测了一下,如果“上级菜单”选“根目录”不改动,那可以正常生成进入;如果选了别的目录层级,例如我新建的目录、Dashboard之类的,那么会遇到前面截图出现的bug。

image

image

@bufanyun
Copy link
Owner

我也按你说的测了一下,没有复现,即使是Dashboard下也是正常的。有兴趣可以先排查下是什么原因导致的

@djun
Copy link
Author

djun commented Aug 11, 2023

我也按你说的测了一下,没有复现,即使是Dashboard下也是正常的。有兴趣可以先排查下是什么原因导致的

您好,先感谢答复!这边花了好几天时间排查,由于对整个项目源码尚不大熟悉,目前排查起来较为吃力,抱歉。

根据 console 报错提示,个人直觉感觉是在动态路由那里,有一条加载组件出错。重新试了下加菜单在 Dashboard 下面,代码中 routerGenerator 里面加 console log 把每个 currentRouter 都打印出来,发现有报错对应的 component: undefined 如下所示:
image
image
image

根据个人猜想:如果加在根目录,新加菜单的最上级那一项 在数据库里面 component 写的是 LAYOUT ,在动态路由读取解析这里可以正常获取到对应的 Layout 组件;但如果我选择了加在已有目录例如 Dashboard 下面,新加菜单的最上级那一项 在数据库里面 component 写的是 ParentLayout ,但在前端解析时 import 不到对应的 parentLayout 组件(虽然看到相应代码文件似乎是存在的),导致变成 undefined。

个人感觉也有点奇怪的是,数据库里预置的多层级的菜单目录数据,似乎也没用上 ParentLayout ,为什么反而生成代码时用上了呢?

暂时不明确下一步怎样继续排查,请您多多指点!

@djun
Copy link
Author

djun commented Aug 11, 2023

最新进展:
在数据库中把component字段ParentLayout值置空,前端动态路由刷新后就可以获取到对应的 parentLayout 组件了!

image
image

表示大受震撼哈哈哈,定位到 Go 这边生成代码对应代码是 server/internal/library/hggen/views/curd.go tplData["mainComponent"] = "ParentLayout" ,恳请您确认一下是否可以修复这里、发布新版本。不胜感激!

image

@djun
Copy link
Author

djun commented Aug 11, 2023

附上自带初始数据里面,排查到 开发工具-生成演示-生成演示列表,这个菜单在我这边点击进入也是产生同样的问题,
数据库中对应数据确实也是用了 component = ParentLayout

如图所示:

image
image
image

@bufanyun
Copy link
Owner

多级目录使用ParentLayout是对的,问题出在component: undefined。从你打印的位置来看是刚获取到菜单列表后component仅进行了一次转换,可以看看component是在哪里变成了undefined

@djun
Copy link
Author

djun commented Aug 14, 2023

多级目录使用ParentLayout是对的,问题出在component: undefined。从你打印的位置来看是刚获取到菜单列表后component仅进行了一次转换,可以看看component是在哪里变成了undefined

您好,最近忙,来晚了,经过排查,在如图 generator-routers.ts 的这个位置开始出现了 undefined
请协助解决,谢谢!

image

@bufanyun
Copy link
Owner

asyncImportRoute方法是最后执行的,而你之前截图发现undefined是在执行asyncImportRoute前,所以继续在asyncImportRoute里打印肯定还是undefined

应该先确认API返回是否正常,然后逐步向下排查,下面为你提供一些这边的数据作为参考,希望能帮到你。

API响应数据,接口地址:/admin/role/dynamic
image

打印到的路由数据
image

image

bufanyun pushed a commit that referenced this issue Aug 15, 2023
优化服务监控定时器,移除notify功能包,修复部门和角色树列表部分情况无法自动展开问题
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants