Cosmos SDK v0.53模块开发中Buf无法定位google/api/annotations.proto的问题求助
Cosmos SDK v0.53模块开发中Buf无法定位google/api/annotations.proto的问题求助
我正在为Cosmos SDK v0.53版本的应用开发新模块,但被一个顽固的Buf错误卡壳了,实在没办法了来求助!
我已经把所有Protobuf依赖都手动vendoring到项目的third_party目录里,但Buf还是找不到标准的Google API导入。每次在项目根目录运行buf build时,都会弹出这个错误:
third_party/proto/ibc/applications/interchain_accounts/controller/v1/query.proto:8:8: import "google/api/annotations.proto": file does not exist
这让我很困惑——明明已经把对应的依赖文件复制到了正确的位置,也配置了Buf工作区,但就是找不到文件。
我的项目配置细节
1. 项目结构
我的项目用Buf工作区来管理自己模块的Protobuf文件和vendoring的依赖:
omnis/ ├── buf.work.yaml # 定义Buf工作区范围 ├── go.mod ├── proto/ │ ├── buf.yaml # 我的自定义模块的Buf配置 │ └── omnis/ │ └── omnis/ │ └── v1/ │ └── genesis.proto(及其他模块相关的Protobuf文件) └── third_party/ └── proto/ ├── cosmos/ ├── gogoproto/ ├── google/ # 从官方'googleapis'文件夹复制后重命名的目录 │ └── api/ │ └── annotations.proto └── ibc/
2. go.mod 相关片段
module omnis go 1.24.4 require ( cosmossdk.io/api v0.9.2 github.com/cosmos/cosmos-sdk v0.53.3 github.com/cosmos/gogoproto v1.7.0 github.com/cosmos/ibc-go/v10 v10.2.0 google.golang.org/genproto/googleapis/api v0.0.0-20250603155806-513f23925822 )
3. buf.work.yaml(项目根目录)
version: v1 directories: - proto - third_party/proto
4. proto/buf.yaml(我的自定义模块目录下)
version: v1 name: buf.build/omnis/omnis lint: use: - DEFAULT except: - UNARY_RPC - PACKAGE_NO_EFFECT - SERVICE_SUFFIX - RPC_REQUEST_STANDARD_NAME - RPC_RESPONSE_STANDARD_NAME - ENUM_VALUE_PREFIX - PACKAGE_VERSION_SUFFIX - OPTION_MISSING_REQUIRED_FIELD breaking: use: - FILE
我已经尝试过的操作
- 反复确认文件存在:
third_party/proto/google/api/annotations.proto确实存在,是从/home/shubham/go/pkg/mod/google.golang.org/genproto@v0.0.0-20241118233622-e639e219e697/googleapis/目录复制后重命名得到的 - 多次清理Buf缓存:执行
rm -rf ~/.cache/buf,确保没有缓存的旧配置干扰 - 检查Buf版本:当前使用的是1.56.0版本
我的疑问
到底在Buf工作区配置或者vendoring的过程中,我漏掉了什么细节?为什么Buf就是找不到google/api/annotations.proto文件?
真的卡了好久,求各位有经验的大佬帮忙指点一下,万分感谢!




