在运行 grpc 服务,加载 *.pb.go 时可能会报抵触谬误,如文件名命名抵触:
其实针对文件名抵触的错误处理开发者有移除过:
- https://github.com/protocolbu…
起初发现有问题又加上了文件冲突检测了: - https://github.com/protocolbu…
protocol-buffers 命名空间抵触的几种状况:
留神 package 和 go_package 没有必然联系,上面说的 package 时 proto 外面的 package 不是 go 的引入包
- file 抵触, 注册的时候会查看文件 (即 source) 抵触
- <pkg name>.<entity name> 不能抵触,<pkg name>.<entity name> 也不能和 <pkg name> 抵触。如 package 叫 ”A.B”, 如果此时另外一个 package 叫 ”A”, 外面有个 ”B” 的 message,那么这个 message 的 fullName 叫做“A.B”就会和后面的 package “A.B” 抵触。package 的名字能够雷同,比方能够有两个 package 都叫 ”A”
protocol buffer 抵触查看相干的代码:
https://github.com/protocolbu…
filesByPath 次要查看文件抵触, descsByName 来查看各类型之间 fullName 有没有互相抵触
如果切实须要更改抵触解决策略,能够运行时指定命令或者配置环境变量:
参考:
- https://developers.google.com…