使用 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 文件夹)中创建一个模块,该模块将由子文件夹共享。