使用 GoLand 为 GO 编译 gRPC .proto 文件后缺少导入
Missing imports after compiling gRPC .proto file for GO using GoLand
我正在尝试从 gRPC 书中找出示例,但我很难找出我正在做的事情有什么问题。
我有一个 .proto 文件,我可以将它编译成 .pb.go 存根。
我正在尝试同时构建客户端和服务器,文件夹结构如下所示:
我 运行 这些命令成功,并且我为客户端和服务器生成了 .pb.go 文件,所以没有问题:
service % protoc -I ecommerce ecommerce/product_info.proto --go_out=plugins=grpc:./ecommerce
client % protoc -I ecommerce ecommerce/product_info.proto --go_out=plugins=grpc:./ecommerce
然而,虽然服务器的 go 文件可以解析所有导入,但客户端却不会。
查看文件夹结构,我期待一切顺利(我这周才开始使用 go 和 gRPC,所以请理解)。
我的 IDE 是 GoLand,我怀疑路径有问题,但我现在不知道从哪里开始。
根据评论,屏幕截图在 service
中显示 go.mod
,但在 client
中显示 none。由于 goland 将 运行 'Go Modules Integration' 启用,因此它需要一个模块(我强烈建议使用模块!)。
最简单的修复方法是在客户端文件夹中 运行 go mod init [module-path]
(后跟 go mod tidy
)。您还可以在 backend
文件夹(或 productinfo
文件夹)中创建一个模块,该模块将由子文件夹共享。
我正在尝试从 gRPC 书中找出示例,但我很难找出我正在做的事情有什么问题。
我有一个 .proto 文件,我可以将它编译成 .pb.go 存根。
我正在尝试同时构建客户端和服务器,文件夹结构如下所示:
我 运行 这些命令成功,并且我为客户端和服务器生成了 .pb.go 文件,所以没有问题:
service % protoc -I ecommerce ecommerce/product_info.proto --go_out=plugins=grpc:./ecommerce
client % protoc -I ecommerce ecommerce/product_info.proto --go_out=plugins=grpc:./ecommerce
然而,虽然服务器的 go 文件可以解析所有导入,但客户端却不会。
查看文件夹结构,我期待一切顺利(我这周才开始使用 go 和 gRPC,所以请理解)。
我的 IDE 是 GoLand,我怀疑路径有问题,但我现在不知道从哪里开始。
根据评论,屏幕截图在 service
中显示 go.mod
,但在 client
中显示 none。由于 goland 将 运行 'Go Modules Integration' 启用,因此它需要一个模块(我强烈建议使用模块!)。
最简单的修复方法是在客户端文件夹中 运行 go mod init [module-path]
(后跟 go mod tidy
)。您还可以在 backend
文件夹(或 productinfo
文件夹)中创建一个模块,该模块将由子文件夹共享。