Files
easygoadmin-wiki/EasyGoAdmin_GoFrame_NaiveVue/zh/generator/faq.md
T
2026-10-20 21:53:26 +08:00

82 lines
3.6 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 10.9 常见问题
:::tip 概述
生成器 FAQ 按"识别/产出/副作用/覆盖"分组。核心认知:生成器是"首次产出"工具,已生成模块的演进走标准开发流程(见第 3 章)。
:::
## 识别类
### Q:枚举没识别/字典没建
注释格式须为 `字段名:1-正常 2-禁用`(`-`、`—`、`=`、`=` 均可分隔)。非 MySQL 库内省不到列注释——在 MySQL 上生成,或人工补注释后重新生成。
### Q:图片/富文本列识别错
图片:注释含 图片/头像/封面,或列名含 avatar/cover/image/icon/photo。
富文本:注释含 富文本,或 TextField 且列名含 content/body/editor。
不满足则手工在 logic 的 FileFields/ContentFields 补声明。
### Q:域名归属错了(前端路径不对)
genDomainMap 决定域(user→system、config→data、article→content、operation_log→monitor、默认 tool)。自定义表未匹配时落 tool——前端文件会生成到 tool 目录,可生成后移动并改菜单 path(或接受 tool 归属)。
### Q:筛选字段不符合预期
筛选字段生成规则:CharField 非图片非 URL 列作 LIKE;带枚举的 Integer/Boolean → Select;*_id 外键 → InputNumber。URL 列(website/site/url/link)自动排除。生成后手工调 querySchemas。
## 产出类
### Q:生成后编译失败
看 Failed 报告项。Go 产物 gofmt 失败会中断该文件。常见:表结构特殊类型映射异常——检查列类型/注释后重试。
### Q:生成的 logic 需要改很多
生成器产出的是"完整可用的标准实现"——标准 CRUD/筛选/字典/文件字段开箱即用。复杂业务(多表联动/特殊流程)在钩子里扩展或手写方法(合法逃生舱),不必强求全部塞进声明。
### Q:前端页面路由 404
菜单 component 值 = `/{domain}/{moduleCamel}/index`,与生成的 views 文件路径一致才有效。检查:菜单是否创建成功(Menu.Message)、角色是否勾选、重启是否执行。
## 副作用类
### Q:菜单/权限节点没创建
看 Menu 报告项 Message。常见:parentMenuId 指向不存在的父级;或 path+type=0 查重命中(已存在,幂等跳过——正常)。
### Q:字典创建了但页面选项还是静态的
querySchemas 生成的是静态 options 示例——手工改为字典驱动(getDictItemList)。后端 {field}Text 已由 SerializeMaps 声明自动填充。
### Q:路由注册失败
Route.Message 提示原因:router.go 不存在 / 缺 controller 导入 / 未找到锚点(最后一个 Bind 行)。手工在 registerControllers 末尾补 `Bind(s, new(controller.CXxx))` 后重启。
### Q:租户级表数据不隔离
生成器不维护 tenantTables——手工把表名加入 `internal/model/hooks/hooks.go` 后重启(漏登=跨租户泄漏,安全红线)。
## 覆盖类
### Q:重复生成会覆盖手工修改吗
默认不会(overwrite=false 时已存在文件 Skipped)。overwrite=true 时全部覆盖(计入 Overwritten)——覆盖前务必备份或临时改回 false。
### Q:改了模板后已有模块会更新吗
不会——已存在文件跳过。模板变更只影响新生成文件;已有模块需手动合并模板差异。
### Q:Skipped 太多想全部重新生成
```text
1. git status 确认手工改动已提交
2. config.yaml 临时 overwrite: true
3. 生成(核对 Overwritten 清单)
4. git diff 审查合并手工改动
5. go build + 重启 + 冒烟
```
### Q:skipTables 是什么
关联表 role_menu/user_role 整表跳过文件生成(无独立模块,关联逻辑归 role/user logic),但菜单/字典/路由副作用照常执行。