You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

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文件?

真的卡了好久,求各位有经验的大佬帮忙指点一下,万分感谢!

火山引擎 最新活动