使用Buf校验Proto文件时遇导入不存在问题求助
问题解决步骤
1. 为每个模块配置module标识
在folderA/buf.yaml和folderB/buf.yaml中添加name字段,声明模块的唯一标识(推荐使用buf.build/[用户名]/[模块名]格式,也可自定义域名前缀):
folderA/buf.yaml
version: v1 name: buf.build/your-username/foldera breaking: use: - FILE lint: use: - DEFAULT
folderB/buf.yaml
version: v1 name: buf.build/your-username/folderb breaking: use: - FILE lint: use: - DEFAULT
2. 修改proto文件的导入语句
将file1.proto中的导入路径改为基于模块标识的格式:
import "buf.build/your-username/folderb/v1/file2.proto";
3. 在根目录执行lint命令
回到包含buf.work.yaml的根目录,运行:
buf lint
补充说明
buf的workspace依赖模块的name字段解析跨模块导入,之前用目录名作为导入路径的方式仅在generate阶段通过临时相对路径生效,但lint会严格遵循模块声明的合法路径校验导入,因此必须配置模块标识并修正导入语句。
内容的提问来源于stack exchange,提问作者R3n3gad3
相关产品推荐
相关产品推荐

