You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

cosmos-sdk/proto/bank/v1beta1/query.proto编译错误求助

问题

安装protoc 3.21.12后,在路径cosmos-sdk/proto/cosmos/bank/v1beta1下执行命令protoc --go_out=. query.proto时,出现大量导入文件未找到及类型未定义错误。已确认导入文件路径正确,且更换过不同cosmos-sdk版本,问题仍存在,期望该命令能无错误执行。错误详情如下:

saiful@saiful-Inspiron-3542:~/Desktop/TestCosmos/cosmos-sdk/proto/cosmos/bank/v1beta1$ protoc --go_out=. query.proto
cosmos/base/query/v1beta1/pagination.proto: File not found.
gogoproto/gogo.proto: File not found.
google/api/annotations.proto: File not found.
cosmos/base/v1beta1/coin.proto: File not found.
cosmos/bank/v1beta1/bank.proto: File not found.
cosmos_proto/cosmos.proto: File not found.
cosmos/query/v1/query.proto: File not found.
amino/amino.proto: File not found.
query.proto:4:1: Import "cosmos/base/query/v1beta1/pagination.proto" was not found or had errors.
query.proto:5:1: Import "gogoproto/gogo.proto" was not found or had errors.
query.proto:6:1: Import "google/api/annotations.proto" was not found or had errors.
query.proto:7:1: Import "cosmos/base/v1beta1/coin.proto" was not found or had errors.
query.proto:8:1: Import "cosmos/bank/v1beta1/bank.proto" was not found or had errors.
query.proto:9:1: Import "cosmos_proto/cosmos.proto" was not found or had errors.
query.proto:10:1: Import "cosmos/query/v1/query.proto" was not found or had errors.
query.proto:11:1: Import "amino/amino.proto" was not found or had errors.
query.proto:135:3: "cosmos.base.v1beta1.Coin" is not defined.
query.proto:147:3: "cosmos.base.query.v1beta1.PageRequest" is not defined.
query.proto:159:12: "cosmos.base.v1beta1.Coin" is not defined.
query.proto:167:3: "cosmos.base.query.v1beta1.PageResponse" is not defined.
query.proto:182:3: "cosmos.base.query.v1beta1.PageRequest" is not defined.
query.proto:191:12: "cosmos.base.v1beta1.Coin" is not defined.
query.proto:199:3: "cosmos.base.query.v1beta1.PageResponse" is not defined.
query.proto:223:3: "cosmos.base.v1beta1.Coin" is not defined.
query.proto:235:3: "cosmos.base.query.v1beta1.PageRequest" is not defined.
query.proto:242:12: "cosmos.base.v1beta1.Coin" is not defined.
query.proto:252:3: "cosmos.base.query.v1beta1.PageResponse" is not defined.
query.proto:264:3: "cosmos.base.v1beta1.Coin" is not defined.
query.proto:273:3: "Params" is not defined.
query.proto:279:3: "cosmos.base.query.v1beta1.PageRequest" is not defined.
query.proto:286:12: "Metadata" is not defined.
query.proto:289:3: "cosmos.base.query.v1beta1.PageResponse" is not defined.
query.proto:302:3: "Metadata" is not defined.
query.proto:313:3: "cosmos.base.query.v1beta1.PageRequest" is not defined.
query.proto:326:3: "cosmos.base.v1beta1.Coin" is not defined.
query.proto:336:3: "cosmos.base.query.v1beta1.PageResponse" is not defined.
query.proto:347:3: "cosmos.base.query.v1beta1.PageRequest" is not defined.
query.proto:354:12: "SendEnabled" is not defined.
query.proto:357:3: "cosmos.base.query.v1beta1.PageResponse" is not defined.

解决方法

1. 正确指定Proto根路径

protoc无法自动识别依赖文件的位置,必须用--proto_path(简写-I)参数指定所有依赖的根目录。由于query.proto中的导入路径是基于cosmos-sdk/proto目录的,你需要把这个目录设为根路径:

  • 若当前在cosmos-sdk/proto/cosmos/bank/v1beta1目录下,执行:
protoc --go_out=. --proto_path=../../../../ query.proto

这里的../../../../对应回到cosmos-sdk/proto目录的相对路径。

  • 更简单的方式是先切换到cosmos-sdk/proto目录再执行命令:
cd ~/Desktop/TestCosmos/cosmos-sdk/proto
protoc --go_out=. cosmos/bank/v1beta1/query.proto

2. 补充外部依赖的Proto文件路径

错误中提到的gogoproto、google/api、amino等外部依赖的proto文件,需要让protoc能找到它们:

  • 先通过Go模块下载这些依赖:
go get github.com/gogo/protobuf/proto
go get google.golang.org/genproto/googleapis/api
go get github.com/cosmos/cosmos-sdk/amino
  • 执行protoc时,把这些依赖的proto目录加入--proto_path:
protoc --go_out=. \
  --proto_path=./ \
  --proto_path=$GOPATH/src/github.com/gogo/protobuf \
  --proto_path=$GOPATH/src/google.golang.org/genproto/googleapis \
  --proto_path=$GOPATH/src/github.com/cosmos/cosmos-sdk/amino \
  cosmos/bank/v1beta1/query.proto

(注:$GOPATH需替换为你本地的Go工作目录路径)

3. 使用Cosmos-SDK官方生成工具

Cosmos-SDK提供了现成的Makefile脚本,自动处理所有依赖路径和生成规则,避免手动执行的麻烦。直接在Cosmos-SDK根目录执行:

make proto-gen

这个命令会自动生成所有proto文件对应的Go代码,包括bank/v1beta1下的文件。

内容的提问来源于stack exchange,提问作者Md. Saiful Islam

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.16 20:42:41