需先确认 go.mod 存在并含 require github.com/kataras/iris/v12,再执行 go mod init 和 go get;运行最小示例验证 HTTP 服务、路由参数解析与中间件是否正常,构建时须确保无 replace 本地路径及 GO111MODULE=off 问题。

检查 iris 是否可被 Go 正确识别
安装完成后,Go 项目里 import "github.com/kataras/iris/v12" 却报 cannot find package,通常不是框架没装,而是模块未启用或路径污染。必须确认当前目录下存在 go.mod 文件,且内容包含 require github.com/kataras/iris/v12。若缺失,执行 go mod init your-app-name 再运行 go get github.com/kataras/iris/v12@latest;不要跳过 go mod tidy,它会补全间接依赖并校验版本兼容性。
运行最小示例并验证 HTTP 服务是否启动成功
写一个最简 main.go,只初始化、监听端口、返回字符串:
package main
import "github.com/kataras/iris/v12"
func main() {
app := iris.New()
app.Get("/", func(ctx iris.Context) { ctx.WriteString("OK") })
app.Listen(":8080")
}
执行 go run main.go 后,立刻在另一终端执行 curl -v http://localhost:8080。关键看三点:HTTP 状态码是否为 200、响应体是否含 OK、Listen 是否无 panic 报错。若卡住或报 address already in use,说明端口被占——换端口(如 :8081)或用 lsof -i :8080 查进程。
验证中间件和路由参数解析是否正常工作
仅返回字符串不够,得确认核心能力可用。比如动态路径参数和中间件链是否触发:
- 把路由改成
app.Get("/user/{id:int min(1)}", ...),访问/user/123应成功,/user/0或/user/abc应返回404 - 加一行
app.Use(func(ctx iris.Context) { ctx.Application().Logger().Info("middleware hit") }),再 curl 一次,检查控制台是否打印日志 - 若日志没输出,大概率是
Use调用位置不对——必须在Get之前,且不能放在Listen之后
确认开发依赖未混入生产构建
执行 go build -o server . 生成二进制后,直接运行 ./server。此时应仍能响应请求。如果报错提示缺 github.com/kataras/iris/v12,说明构建时用了 GO111MODULE=off 或 vendor 目录异常;更隐蔽的问题是:本地开发用 go run 没问题,但 CI 环境里 go build 失败——根源常是 go.mod 中 replace 指向了本地路径,上线前必须删掉。











