我有 2 个 grpc 服务(service1和service2)相互交互,在某些情况下,rpc 响应service1将由 中定义的结构组成service2,在遇到重复不可避免的几种情况之后,我认为随着服务的增长,这些将变得困难为了管理,所以我现在将原始文件重组为这样的东西
.
├── app
...
├── proto
│ ├── service1
│ │ ├── service1.access.proto
│ │ ├── service1.proto
│ ├── service2
│ │ ├── service2.access.proto
│ │ └── service2.proto
│ └── model
│ ├── model.service1.proto
│ └── model.service2.proto
└── proto-gen // the protoc generated files
├── service1
│ ├── service1.access.pb.go
│ └── service1.pb.go
├── service2
│ ├── service2.access.pb.go
│ └── service2.pb.go
└── model
├── model.service1.pb.go
└── model.service2.pb.go
service1需要导入模型定义model/model.service2.proto,所以我像这样导入它
import "model/model.service2.proto";
option go_package = "proto-gen/service1";
我.pb.go使用这个protoc命令生成文件
ls proto | awk '{print "protoc --proto_path=proto proto/"$1"/*.proto --go_out=plugins=grpc:."}' | sh
该命令生成.pb.go文件很好,但代码service1.access.pb.go似乎没有正确导入模型,我不知道它是否相关,但当我运行应用程序时,它会抛出此错误
cannot load model: malformed module path "model": missing dot in first path element
我现在花了几个小时搜索如何正确导入另一个原始文件,我似乎找不到任何解决方案
白衣非少年
沧海一幻觉
肥皂起泡泡
相关分类