go-nunu安装后找不到nunu命令,是因为go install生成的二进制文件位于gobin(或gopath/bin)目录,需手动将该路径添加到系统path环境变量中才能全局调用。

go install 后找不到命令?检查 GOBIN 和 PATH
很多开发者执行 go install github.com/go-nunu/nunu@latest 或类似命令后,终端直接报 command not found: nunu。这不是安装失败,而是 Go 的二进制文件没被系统找到。
Go 1.16+ 默认把 go install 编译出的可执行文件放在 $GOPATH/bin(旧版)或 $GOBIN(新版优先)目录下。如果你没显式设置 GOBIN,它会 fallback 到 $GOPATH/bin;而无论哪种路径,都必须手动加进系统 PATH 才能全局调用。
- 运行
go env GOPATH和go env GOBIN确认实际路径 - 若
GOBIN为空,建议显式设置:例如export GOBIN=$HOME/go/bin - 把该路径加入
PATH:例如export PATH=$GOBIN:$PATH(写入~/.zshrc或~/.bashrc) - 重载配置后,用
which nunu或which mixcli验证是否生效
选模板前先看清楚 -r 参数指向的是什么仓库
像 nunu new projectName -r https://gitee.com/go-nunu/nunu-layout-advanced.git 这类命令,-r 指定的不是项目源码,而是「模板仓库」——它里面只放目录结构和占位文件(如 {{.ProjectName}}),不包含任何可运行逻辑。如果误用了普通项目仓库(比如直接 fork 一个完整服务代码当模板),脚手架大概率会报错或生成无效结构。
真正可靠的模板仓库有明确特征:
- 根目录只有
.gitignore、README.md和带.tmpl或_template后缀的文件/目录 - 没有
go.mod(或仅有空的、用于占位的) - GitHub/Gitee 页面描述中明确写有 “template”、“scaffold”、“layout” 字样
- 国内用户优先选 Gitee 镜像(如
nunu-layout-basic.git),避免 GitHub 拉取超时
mixcli 生成的 CLI 项目为什么不能直接 go run main.go?
mixcli new hello 生成的 CLI 项目默认依赖 github.com/mix-go/cli-skeleton 中的预编译骨架,而这个骨架本身是作为模块被引用的。直接 go run main.go 会触发 Go 的 module 模式自动解析依赖,但部分子包(如 configor、di)在 skeleton 里是以 blank import(_ "xxx")方式注册的——它们的 init 函数只在构建时被触发,go run 不保证按需加载。
正确做法是:
- 先
go mod tidy确保所有依赖拉取完整 - 用
go build -o bin/hello ./main.go构建可执行文件再运行 - 或者改用
mixcli run(如果工具支持)——它内部封装了正确的构建上下文 - 注意:mix-go 生态中,
commands/下的命令逻辑由xcli.AddCommand注册,不是靠main()自动发现
go-scaffolding 的 CRUD 生成器要改 model 定义,但 wire_gen.go 报错
go-scaffolding 使用 Wire 做依赖注入,所有 wire_gen.go 文件都是自动生成的。当你手动修改 internal/model/article.go 后,如果立刻运行 go run main.go,很可能遇到 undefined: Article 或 cannot use &Article literal 类错误——这是因为 Wire 的代码生成器还没重新运行。
关键动作顺序不能错:
- 先改
model/*.go,确保字段标签(如gorm:)、类型、JSON 标签都合法 - 再执行
go generate ./...或go run github.com/google/wire/cmd/wire(取决于项目是否配置了 //go:generate) - 确认
wire_gen.go文件内容已刷新,且无语法错误 - 最后
go run main.go启动 - 常见坑:Wire 无法推导未导出字段、匿名嵌入结构体未加
json:标签、GORM tag 写成grom:(拼错)
golang免费学习笔记(深入):立即使用
在学习笔记中,你将探索golang的核心概念和高级技巧!











