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

99 lines
4.0 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.
# 2.8 常见问题 FAQ
:::tip 概述
本节收录环境搭建与首次运行阶段最常遇到的问题。更多排障条目见 [附录 A 常见问题汇总](../appendix/faq) 与 [11.10 故障排查手册](../deploy/troubleshooting)。
:::
## 环境与编译
### Q:`go build` 报 `go.mod requires go >= 1.27.2`
go.mod 声明的版本高于本机 Go 版本。升级 Go 到 1.27.2+,或使用 go env 切换已安装的高版本。
### Q:依赖下载缓慢或失败
```sh
go env -w GOPROXY=https://goproxy.cn,direct
go mod tidy
```
### Q:前端 `pnpm install` 报引擎不匹配
检查 Node 版本(要求 18+)。部分依赖对 pnpm 版本敏感,可升级 pnpm 后重装:
```sh
npm install -g pnpm@latest
pnpm install
```
## 数据库
### Q:连接 MySQL 报错 `Unknown database`
库名是 `easygoadmin.goframe.elevue`(含点号),确认已建库且拼写一致;建库语句见 [2.4 数据库初始化](./database-init)。
### Q:切换数据库类型后启动报驱动错误
确认 `database.default.type` 与 `link` 前缀一致(如 `type: "pgsql"` 且 `link: "pgsql:..."`)。五驱动已预注册,无需改代码。
### Q:导入脚本后缺少唯一索引
`document/` 各方言脚本中 MySQL 版为规范基准,后四份待人工校对。以 MySQL 版核对 `uk_*` 唯一索引清单(应有 13 个),缺失需人工补齐——唯一索引是并发唯一性的最终保证。
## 启动与运行
### Q:启动报端口占用
```sh
netstat -ano | findstr ":8000" | findstr LISTENING
taskkill /F /PID <pid>
```
或修改 `manifest/config/config.yaml` 的 `server.address`。
### Q:启动日志出现 `IdentityLoader`/`LogSink` 告警
中间件依赖未接线(不阻断启动)。通常原因:`internal/cmd` 缺少对 `internal/logic` 的空白导入,或 init 注册被误删。表现为:不加载角色权限 / 跳过租户校验 / 操作日志不落库。
### Q:日志提示 Redis 连接失败并降级
服务以进程内存缓存运行(`UsingMemory()=true`)。限流计数、任务执行锁、在线用户、JWT 黑名单、验证码全部退化单机语义。检查 Redis 地址/密码,确认后可通过 `/api/cache/info` 验证 `mode` 是否恢复为 `redis`。
### Q:接口返回 `{"code":401}`
令牌缺失、过期或已被拉黑。重新登录获取新令牌;带 refresh_token 走 `POST /api/oauth2/token` 轮换。注意登录响应字段是 `access_token`(下划线)。
### Q:接口返回 `{"code":403}`
权限不足:确认 gmeta `permission` 标签对应节点已在「菜单管理」存在,且已在「角色管理」为当前角色勾选。超管(ROLE_SUPER_ADMIN)不受限。
### Q:接口返回 `{"code":429}`
触发限流(默认普通接口 120 次/分钟/IP/路径;登录/验证码/令牌兑换 10 次/分钟/IP)。等待窗口过期或调整 `rateLimit.*` 配置。
### Q:写操作被拒绝并提示"演示环境,禁止操作!"
`app.demo: true` 时拦截全部写操作(读操作与公开白名单放行)。本地开发改回 `false` 并重启。
### Q:验证码图片不显示
检查 `/api/captcha` 是否 200;字体文件 `resource/static/fonts/Vera.ttf` 缺失会降级 SVG 渲染(仍可用);若被限流(认证入口 10 次/分钟)等待窗口过期。
### Q:登录报"验证码错误"
开发环境可在验证码栏直接填配置中的 `captcha.bypassCode`(默认 618618)免校验;生产环境该值应留空。注意验证码为一次性校验(命中即删)。
## 前端
### Q:登录成功但刷新页面回到登录页
确认后端返回的令牌字段读取的是 `data.access_token`;检查浏览器 localStorage 是否被拦截清除;确认系统时间正常(令牌 exp 校验)。
### Q:页面菜单为空
菜单按角色权限动态生成。在「角色管理 → 权限」为角色勾选菜单节点;超管返回全量菜单。也可能是 `getUser` 接口 401——检查令牌。
### Q:接口 404
本项目全部路由统一 `/api` 前缀且**无 `/v1` 版本段**。`/api/v1/user/page` 形式会 404,正确为 `/api/user/page`。