必须显式开启GO111MODULE=on、配置双源GOPROXY、import和go get路径带/v12,且调用app.Listen()启动服务;否则会出现装不上、import标红、无响应等问题。

装不上、import标红、go run没反应——八成是模块没开、代理没设、路径漏了/v12,不是Iris本身有问题。
GO111MODULE必须显式开启
Go 1.16+ 默认仍可能关闭模块模式,尤其旧项目迁移时。不开启会导致go get写入vendor或直接静默失败,import "github.com/kataras/iris/v12"必然报错。
- 运行
go env -w GO111MODULE=on强制启用 - 验证:执行
go env GO111MODULE,输出必须是on - 别依赖IDE自动识别——VS Code里即使装了Go插件,没这一步照样标红
GOPROXY国内必须配双源
不设代理时,go get github.com/kataras/iris/v12@latest会卡在Fetching modules...或超时失败,错误不明显,容易误判为网络问题。
- 执行
go env -w GOPROXY=https://mirrors.aliyun.com/goproxy,https://proxy.golang.org - 检查生效:
go env GOPROXY应输出上述两个地址(逗号分隔) - 单源有失效风险,阿里云镜像偶尔同步延迟,
proxy.golang.org作兜底更稳
import路径和go get命令必须带/v12
Iris v12起强制语义化版本路径,漏写/v12会拉取github.com/kataras/iris这个兼容包(实际是v0.x),API完全不兼容当前文档。
- 正确命令:
go get github.com/kataras/iris/v12@latest - 错误写法:
go get github.com/kataras/iris(拉错版本) - 验证安装:检查
go.mod是否新增一行github.com/kataras/iris/v12 v12.2.0(以实际版本为准) - 生产环境建议锁小版本:
go get github.com/kataras/iris/v12@v12.2.0
app.Listen()不是可选步骤
iris.New()只建实例,不启动HTTP服务。写完路由就go run main.go,终端无输出、浏览器打不开——不是框架卡住,是根本没监听端口。
- 必须调用
app.Listen(":8080")或app.Run(iris.Addr(":8080")) - 该调用阻塞主线程,后续代码不会执行;想启动后初始化,用
app.OnStarted(func(){...}) - 端口被占时会报
listen tcp :8080: bind: address already in use,换端口即可
最容易被忽略的是GO111MODULE=on和/v12路径——这两处出错,整个流程从第一步就断掉,但错误信息极其安静,只能靠手动验证环境变量和go.mod内容来定位。


















