必须设置 go111module=on 且配置 goproxy(如 https://mirrors.aliyun.com/goproxy/),否则 iris v12+ 因模块化设计将无法正确下载和构建;其他变量如 cgo_enabled 不属系统环境变量范畴。

GO111MODULE 必须设为 on
不启用 Go Modules,go get github.com/kataras/iris 会默认走 GOPATH/src 老路径,但 Iris v12+ 已完全基于模块开发,强行用 GOPATH 模式会导致找不到包、版本混乱或构建失败。
Windows 用户在 CMD 中临时设置:
set GO111MODULE=on
Linux/macOS 用户在终端中执行:
export GO111MODULE=on
更推荐写入系统级配置(避免每次新开终端都重设):
- Windows:在「系统属性 → 高级 → 环境变量」中新增用户或系统变量
GO111MODULE,值为on - macOS/Linux:将
export GO111MODULE=on加入~/.zshrc(或~/.bash_profile)后运行source ~/.zshrc
GOPROXY 要指向可用代理源
直接访问 GitHub 常因网络问题卡住或报 fatal: early EOF、RPC failed,本质是 go get 在拉取 Iris 及其依赖(如 github.com/valyala/fasthttp)时被中断。
国内稳定可用的代理地址(任选其一):
-
https://goproxy.io(较老但仍可用) -
https://mirrors.aliyun.com/goproxy/(阿里云,响应快,推荐) -
https://goproxy.cn(七牛云维护,对私有模块支持好)
设置方式(以 Windows CMD 为例):
set GOPROXY=https://mirrors.aliyun.com/goproxy/
注意:GOPROXY 仅影响公共模块下载;若项目含私有仓库(如公司内网 Git),需额外配 GOPRIVATE,例如:
set GOPRIVATE=git.company.com/*
GOPATH 不再决定 Iris 安装位置
很多教程还说“检查 GOPATH/src/github.com/kataras/iris 是否存在”,这已过时。Go Modules 启用后,Iris 实际被下载到:
<code>GOPATH</code>/pkg/mod/cache/download/github.com/kataras/iris/@v/
你无需手动管理这些路径,也不应把项目代码放在 GOPATH/src 下——现代 Iris 项目应独立建目录,用 go mod init myapp 初始化模块。
常见误操作:
- 删掉
GOPATH/pkg/mod试图“清理缓存” → 导致下次go run重新下载全部依赖,耗时且易失败 - 把
main.go放进GOPATH/src再go run→ 可能触发 GOPATH 模式,绕过GO111MODULE设置
CGO_ENABLED 影响编译结果,但和环境变量无关
这不是环境变量配置问题,但常被混淆:Iris 底层依赖 fasthttp,而后者在某些场景(如 DNS 解析、SSL)会调用 C 代码。若你在 Linux 上交叉编译部署,需明确控制 CGO_ENABLED:
-
CGO_ENABLED=0:生成纯静态二进制,无 libc 依赖,适合 Alpine 等精简镜像;但禁用系统 DNS(fallback 到 Go 自带解析器),且无法使用 SQLite 等 C 扩展 -
CGO_ENABLED=1(默认):启用 cgo,需目标机器有对应版本的libc;若部署到 CentOS 7,本地用 Ubuntu 编译可能因 glibc 版本不兼容而 panic
它不属于“系统环境变量配置”范畴,而是构建时传给 go build 的临时标志,例如:
CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build -o app ./main.go
真正要配进系统环境变量的,只有 GO111MODULE 和 GOPROXY 这两个。











