必须先执行go mod init初始化模块,再用go get github.com/kataras/iris/v12@latest安装v12版本,并配置GOPROXY=https://goproxy.cn,direct,import路径须为"github.com/kataras/iris/v12"。

go mod init 必须在安装前执行
不初始化模块就直接 go get,Go 会把 iris/v12 写进 GOROOT/src 或全局 GOPATH,导致后续项目无法正确解析依赖、go run 报 cannot find package。必须先创建空目录并初始化:
mkdir myapp && cd myapp-
go mod init myapp(模块名建议用小写字母+短横线,避免大写或下划线) - 这一步生成
go.mod,后续所有go get才会记录到该文件中
go get 命令必须带版本后缀 /v12
Iris v12 是语义化版本主干,不加 /v12 会拉取过时的 v0.x 分支(已废弃),甚至触发 Go 的“伪版本降级”逻辑,最终编译失败或运行时报 undefined: iris.New。
- 正确命令:
go get github.com/kataras/iris/v12@latest(推荐)或go get github.com/kataras/iris/v12@v12.2.9(指定稳定版) - 不要用
go get -u github.com/kataras/iris—— 这会忽略 v12 模块路径,且-u在 module 模式下已不必要 - 若看到
go: downloading github.com/kataras/iris v0.0.2,说明命令写错了,立刻删掉go.sum和go.mod重来
GOPROXY 环境变量是安装成功的前提
国内直连 GitHub 极大概率超时或中断,表现为 fatal: early EOF、connection refused 或卡在 resolving hosts...。必须提前配置代理,且优先级高于 go env -w 的单次写入。
- 推荐设置:
go env -w GOPROXY=https://goproxy.cn,direct(direct保底访问私有仓库) - 验证是否生效:
go env GOPROXY应输出你刚设的值 - 如果仍失败,再补一句:
go env -w GO111MODULE=on(虽新版本默认开启,但旧项目可能关闭) - 极端情况可清缓存:
go clean -modcache,再重试go get
import 路径和版本号必须严格匹配
代码里 import 的路径不是 "github.com/kataras/iris",而是带 /v12 后缀的完整模块路径。否则编译器找不到包,报 import "github.com/kataras/iris" is a program, not an importable package。
- 正确写法:
import "github.com/kataras/iris/v12" - 错误写法:
import "github.com/kataras/iris"或import "github.com/kataras/iris/v13"(v13 尚未发布) -
go.mod中 require 行也必须是github.com/kataras/iris/v12 v12.x.x,不能少/v12 - IDE 自动补全有时会漏掉
/v12,务必手动检查
实际跑通的关键点就三个:模块初始化、带 /v12 的 import 路径、可用的 GOPROXY。少一个,go run main.go 就会停在编译阶段,而不是运行时报错——这点容易误判为代码问题。











