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

导入Nighthawk项目proto报File not found错,如何生成Go gRPC客户端代码

问题原因

protoc执行时默认仅扫描当前工作目录及系统默认路径下的proto文件,你没有手动指定依赖proto所在的搜索路径,导致import的公共依赖文件无法被识别。

解决步骤
  1. 提前下载所有依赖的proto源码到本地:
  • Envoy仓库源码:确保你已将Envoy仓库克隆到本地,其中api目录下包含所有报错中缺失的envoy/*路径的proto文件
  • Validate校验proto源码:获取对应validate/validate.proto文件
    建议统一将所有第三方依赖存放到项目根目录的third_party文件夹下,方便路径管理。
  1. 执行protoc时通过-I(即--proto_path)参数添加所有需要扫描的proto搜索路径,示例命令如下(路径请根据你本地实际存放位置调整):
protoc \
  -I . \
  -I ./third_party/envoy/api \
  -I ./third_party/validate/proto \
  --go_out=. --go_opt=paths=source_relative \
  --go-grpc_out=. --go-grpc_opt=paths=source_relative \
  api/client/output.proto
补充说明
  • 你没有遗漏其他配置,仅需要确保所有import路径对应的父目录都被加入到protoc的搜索路径中即可。如果后续还出现其他找不到文件的报错,只需将对应依赖的proto父目录追加-I参数即可。
  • 路径匹配规则:比如import声明为envoy/config/core/v3/base.proto,你添加的-I指定的目录下必须能直接找到envoy/config/core/v3/base.proto这个路径,根据你本地存放依赖的位置调整-I的参数值即可。
  • 可选简化方案:你也可以使用buf工具来管理proto依赖,无需手动克隆第三方仓库,配置好依赖声明文件后直接执行生成命令即可生成代码。

内容的提问来源于stack exchange,提问作者Navendu Pottekkat

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 21:18:02