go-admingo-admin
  • 指南
  • 开发
    • 进阶
    • 指令
  • 前端
  • 高阶
  • 授权
  • 帮助
  • GitHub
  • Changelog
⌘ K
介绍
快速开始
Go 环境
Go Modules
环境变量
Node 环境
IDE 配置
规范约束
部署环境
常见问题
最后更新时间:
Open-source MIT Licensed | Copyright © 2020-present
Powered by go-admin-team

TABLE OF CONTENTS

‌
‌
‌
‌

CGO 的问题

ERROR

windows 下 CGO 的问题 在 Windows 环境下编译时,可能遇到 CGO 相关的报错:

bash
E:\go-admin>go build
# github.com/mattn/go-sqlite3
cgo: exec /missing-cc: exec: "/missing-cc": file does not exist

or

bash
D:\Code\go-admin>go build
# github.com/mattn/go-sqlite3
cgo: exec gcc: exec: "gcc": executable file not found in %PATH%

如何解决 cgo: exec /missing-cc: exec: "/missing-cc": file does not exist

Error: requires at least one arg

项目启动时如果系统系统时输出内容告诉我们:Error: requires at least one arg ,至少有一个参数;

你也可以使用./go-admin -h 来查看帮助;

下图是输出内容:

输出内容告诉我们:Error: requires at least one arg ,至少有一个参数;

你也可以使用./go-admin -h 来查看帮助;

Mac 环境中 gyp: No Xcode or CLT version detected!

问题详情

bash
> fsevents@1.2.12 install /Users/zhangwenjian/Code/go-test/go-admin-ui/node_modules/fsevents
> node-gyp rebuild
No receipt for 'com.apple.pkg.CLTools_Executables' found at '/'.
No receipt for 'com.apple.pkg.DeveloperToolsCLILeo' found at '/'.
No receipt for 'com.apple.pkg.DeveloperToolsCLI' found at '/'.
gyp: No Xcode or CLT version detected!
gyp ERR! configure error
gyp ERR! stack Error: `gyp` failed with exit code: 1
gyp ERR! stack at ChildProcess.onCpExit (/usr/local/lib/node_modules/npm/node_modules/node-gyp/lib/configure.js:345:16)
gyp ERR! stack at ChildProcess.emit (events.js:198:13)
gyp ERR! stack at Process.ChildProcess._handle.onexit (internal/child_process.js:248:12)
gyp ERR! System Darwin 19.4.0
gyp ERR! command "/usr/local/bin/node" "/usr/local/lib/node_modules/npm/node_modules/node-gyp/bin/node-gyp.js" "rebuild"
gyp ERR! cwd /Users/zhangwenjian/Code/go-test/go-admin-ui/node_modules/fsevents
gyp ERR! node -v v10.16.0
gyp ERR! node-gyp -v v3.8.0
gyp ERR! not ok

解决方案

bash
sudo xcode-select --install

如果之前安装过,请使用一下命令重置

SUCCESS

原因是 Mac 升级后,缺了 xcode 的 CLI 工具, 只要执行下面的命令来安装就可以了。

bash
sudo xcode-select --reset

mysql connect error %v dial tcp 127.0.0.1:3306: connect: connection refused

问题详情

bash
$ ./go-admin
2020/04/07 14:21:14 root:password@tcp(127.0.0.1:3306)/dbname
2020/04/07 14:21:14 mysql connect error %v dial tcp 127.0.0.1:3306: connect: connection refused

解决方案

修改配置文件中的 mysql 配置信息,配置文件的位置在 config/settings.yml,以下内容(只是配置文件中相关内容)是需要修改的配置内容

bash
database:
# 数据库类型 mysql,sqlite3, postgres
driver: mysql
# 数据库连接字符串 mysql 缺省信息 charset=utf8&parseTime=True&loc=Local&timeout=1000ms
source: user:password@tcp(127.0.0.1:3306)/dbname?charset=utf8&parseTime=True&loc=Local&timeout=1000ms

使用 el-tree 组件 setCheckedKeys 报错

问题详情

bash
"TypeError: Cannot read property 'setCheckedKeys' of undefined"

原因

树的数据是异步取回的,赋值后组件尚未完成渲染,此时 $refs 上还拿不到实例。

解决方案

在 $nextTick 中调用,等 DOM 更新完成后再操作:

js
roleMenuTreeselect(roleId).then(response => {
this.menuOptions = response.data.menus
this.$nextTick(() => {
this.$refs.menuTree.setCheckedKeys(checkedKeys)
})
})

完整写法见 src/views/admin/sys-role/index.vue。

对不起,您没有改接口访问权限,请联系管理员

问题详情

解决方案

可以根据这个日志,酌情进行配置

github.com/mattn/go-sqlite3 cgo: exec gcc: ******

问题详情

在 windows 环境中会出现这个问题;

bash
E:\go-admin>go build
# github.com/mattn/go-sqlite3
cgo: exec /missing-cc: exec: "/missing-cc": file does not exist

or

bash
D:\Code\go-admin>go build
# github.com/mattn/go-sqlite3
cgo: exec gcc: exec: "gcc": executable file not found in %PATH%

解决方案

下载符合自己系统版本的压缩包

https://sourceforge.net/projects/mingw-w64/files/mingw-w64/

INFO

⚠️ 使用注意

当前是MinGW-W64 GCC-8.1.0版本,如果版本不匹配,可以根据对应的操作系统进行下载配置;

64 位操作系统,下载这个版本

x86_64-posix-seh

32 位操作系统,下载这个版本

x86_64-win32-seh

直接解压以后 , 把 bin 目录配置到 系统环境变量中的 PATH 变量中即可

INFO

windows 环境变量配置时,bin目录的路径中间不要出现空格;

例如:C:/go go/bin 这样的路径是不能被正常使用的;

例如:C:/go_go/bin ✔️;

配置了 redis,服务却启动不了

当前版本的缓存与队列都支持 redis,配置方式见缓存与队列。

配好之后如果服务反而启动不了,几乎总是连接参数的问题——redis 配置错误时服务会直接启动失败,而不是像早期版本那样静默改用内存实现(那是 issue #846 记录的旧问题,已经修复)。按顺序检查:

  1. addr 是否可达——本机能否 redis-cli -h <addr> ping;
  2. password 是否正确;
  3. db 序号是否超出 redis 实例的 databases 配置。

启动日志会打印具体的连接错误,据此定位即可,不需要靠猜。

token 一直不过期 / 登录不需要验证码

检查配置文件中的 application.mode。

设置为 dev 时,登录会跳过验证码校验,且 JWT 有效期被强制设为 876010 小时(约 100 年),jwt.timeout 的设置不生效。这是为方便本地开发,生产环境必须改为 prod。

各取值的完整影响见配置参考。

修改了配置文件但没有生效

按顺序确认:

  1. 启动时 -c 指定的是否为正在修改的那个文件——不带 -c 时默认读取 config/settings.yml;
  2. 该配置项是否真的被程序读取。locker 配置块在当前版本没有对应的结构体字段,写了不会被解析;
  3. 是否重启了服务。配置在启动时载入,修改后需要重启。

WARNING

从哪里获得帮助:

如果你在阅读本教程的过程中有任何疑问,可以前往提交建议。