旧版 Iris 必须用 v12 分支显式版本号,如 go get github.com/kataras/iris/v12@v12.2.0;需先 go mod init 初始化模块,删 vendor 和 go.sum 后 go mod tidy;Windows 下可临时设 GOPROXY=https://goproxy.cn 解决超时。

旧版本 Iris 必须用 v12 分支 + 显式版本号,go get 不认 master 或 latest
直接 go get github.com/kataras/iris 会失败——Iris 自 v12 起强制使用模块化路径 github.com/kataras/iris/v12,且不再支持无版本后缀的导入。v11 及更早版本已归档,官方不维护,但若项目强依赖旧行为(如旧中间件签名、Party 用法),只能锁定具体语义化版本。
- 确认你要的旧版号,比如
v12.2.0(非v12.2,缺补零会报错) - 在项目根目录执行:
go get github.com/kataras/iris/v12@v12.2.0 - 检查
go.mod是否写入了对应行:github.com/kataras/iris/v12 v12.2.0 - 别用
-u参数:它会升级到最新 patch,可能破坏兼容性 - 如果项目已有
replace指向本地 fork,先删掉再拉取,否则go get会跳过远程
go mod init 后再拉取,否则 go get 可能静默失败
很多旧项目没初始化模块,直接 go get 会把包下到 $GOPATH/src,但编译时仍走 vendor 或老缓存,导致 import 报错 cannot find package。
- 进项目目录,先运行:
go mod init your-module-name(名称任意,但需合法) - 再执行
go get github.com/kataras/iris/v12@v12.2.0 - 此时
go.mod和go.sum会自动生成,import "github.com/kataras/iris/v12"才能被正确解析 - 若提示
unknown revision,说明该 tag 不存在,去 GitHub Releases 页面 确认真实版本号
拉取后编译报 Assets undefined?删掉 vendor 和 go.sum 重来
这是最常踩的坑:旧项目混用了 vendor 目录和模块机制,或 go.sum 锁定了冲突的子依赖(比如 github.com/kataras/iris/v12@v12.1.0 和 @v12.2.0 并存)。
- 删掉项目下的
vendor/目录(如果有) - 删掉
go.sum文件 - 运行
go mod tidy,让工具重新计算依赖树 - 如果仍报
Assets undefined(常见于模板静态资源加载),说明你用的是 v12.1.x 之前的 API,得降级到v12.0.1或改代码适配新Asset接口
Windows 下 GOPROXY 失效导致拉取超时?手动设国内镜像
旧版 Go(如 1.13–1.16)默认不启用代理,而 GitHub 域名在部分网络环境下解析慢或失败,go get 卡住或报 timeout。
- 临时生效:
go env -w GOPROXY=https://goproxy.cn,direct - 验证是否生效:
go env GOPROXY应输出https://goproxy.cn,direct - 再执行
go get github.com/kataras/iris/v12@v12.2.0 - 拉完记得
go env -u GOPROXY恢复,避免影响其他项目
ctx.Writef 在 v12.1.0 被移除,换成 ctx.WriteString。


















