必须从kratos new命令开始——它是唯一受官方保障的初始化入口,跳过将导致wire注入断裂、proto生成失败、配置加载panic;需确保protoc≥3.21、protoc-gen-go=v1.31、GO111MODULE=on及GOPROXY正确设置。

要用Kratos框架快速搭建一个结构规范、可立即编译运行的微服务项目,必须从kratos new命令开始——它不是可选步骤,而是唯一受官方保障的初始化入口,跳过它将导致wire依赖注入断裂、proto代码生成失败、配置加载panic等连锁问题。
确认环境前提条件
执行kratos new前,三项检查缺一不可:【protoc ≥ 3.21 且 protoc-gen-go = v1.31】,v1.32+会因protobuf接口变更使api/下.pb.go生成失败;【GO111MODULE=on】必须启用,否则go mod download会漏掉google.golang.org/grpc/cmd/protoc-gen-go-grpc等关键工具;国内用户务必设置GOPROXY=https://goproxy.cn,direct,否则拉取kratos-layout模板时会静默超时,只留下空文件夹。
执行kratos new命令
在终端中输入kratos new helloworld,项目名可替换为你自己的服务名,比如usercenter或order-svc。
命令运行后会自动克隆模板仓库到$HOME/.kratos/repo/github.com/go-kratos/kratos-layout@main,后续新建项目将复用本地缓存,速度更快。
如果 GitHub 访问不稳定,改用 Gitee 镜像源:kratos new helloworld -r https://gitee.com/go-kratos/kratos-layout.git。
验证生成结果是否完整
第一步:进入项目目录,检查internal/conf/conf.proto是否存在。若缺失,conf.Load()会在运行时panic报"unknown field 'xxx' in conf.Config"。
第二步:打开cmd/server/wire.go,确认其中已声明InitializeApp函数。这是Wire依赖注入的唯一入口,被误删会导致kratos run直接报"undefined: InitializeApp"而非友好提示。
第三步:运行kratos run,观察日志是否输出[gRPC] server listening on: [::]:9000和[HTTP] server listening on: [::]:8000。若报错failed to load config: open configs/config.yaml: no such file or directory,说明configs/config.yaml未生成,需退回检查kratos new是否中途失败。


















