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

Protobuf相对导入失败求助:service.proto编译提示文件找不到

解决protoc生成service.pro时报错"user/models/models.proto: File not found"

问题原因

service.proto中的import "user/models/models.proto"路径与执行protoc命令时指定的搜索根目录不匹配,导致protoc无法定位到依赖的proto文件。

解决方案

根据你的文件夹结构,选择以下任一方案:

方案1:调整import路径并修正命令(推荐)

假设你的文件夹结构为(执行命令时处于user目录下,该目录包含models和service子文件夹):

user/
├── models/
│   └── models.proto
└── service/
    └── service.proto
  1. 修改service.proto中的import语句:
    // 替换原有的 import "user/models/models.proto"
    import "models/models.proto";
    
  2. 执行生成命令:
    生成models代码:
    protoc -I=. --go_out=. models/models.proto
    
    生成service代码:
    protoc -I=. --go-grpc_out=. service/service.proto
    

方案2:指定正确的根目录作为protoc搜索路径

如果你的文件夹结构为(存在一个包含user文件夹的根目录):

根目录/
└── user/
    ├── models/
    │   └── models.proto
    └── service/
        └── service.proto
  1. 进入根目录(包含user文件夹的目录)
  2. 执行以下命令:
    生成models代码:
    protoc -I=. --go_out=. user/models/models.proto
    
    生成service代码:
    protoc -I=. --go-grpc_out=. user/service/service.proto
    
    此方式下,protoc会以根目录为搜索起点,通过user/models/models.proto路径找到依赖文件。

额外注意事项

  • 确认go_package指定的路径符合你期望的代码生成位置,避免生成路径混乱。
  • 执行命令时,确保当前所在目录与命令中的路径参数完全匹配。

内容的提问来源于stack exchange,提问作者Praveen Kumar

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.21 12:33:14