如何修复"--go_out:protoc-gen-go:系统找不到指定的文件"错误



我创建了一个person.proto,我想将这个文件编译为*.go。 我安装了软件包

去获取 -u github.com/golang/protobuf/protoc-gen-go

执行以下命令后

.\protoc.exe --go_out=. person.proto

我收到以下错误

-

-go_out:protoc-gen-go:系统找不到指定的文件。

我想使用缓冲区协议,版本 2

如何修复此错误?

我的原型文件:

package communication;
message Person {
required string name = 1;
required int32 id = 2;
optional string email = 3;
enum PhoneType {
MOBILE = 0;
HOME = 1;
WORK = 2;
}
message PhoneNumber {
required string number = 1;
optional PhoneType type = 2 [default = HOME];
}
repeated PhoneNumber phone = 4;
}

在Windows上,我运行了以下命令来解决此问题。

go install google.golang.org/protobuf/cmd/protoc-gen-go@latest

go install google.golang.org/grpc/cmd/protoc-gen-go-grpc@latest

谷歌开发者

说明

不幸的是,据说没有一个核心开发人员在Windows上开发,因此我解决了这个问题并为Windows开发人员添加了这个答案。

但是,@Flimzy提到的可能的重复链接不起作用,我已经完成了下面的所有 6 个步骤,然后令人惊讶的是,问题已在步骤 7 中得到解决。此外,我错误地在 VSCode 终端上运行该命令。


程序

  1. 从"https://developers.google.com/protocol-buffers/docs/downloads"下载protoc-win32.zip

  2. 解压缩文件,然后将protoc.exe的位置添加到 PATH 环境变量中。另外,没有必要,您可以将protoc.exe复制到GOPATH

  3. 更改/导航文件的 CMD/Powershell 路径,然后从命令提示符运行protoc.exe --version以验证该过程。

  4. 验证是否已设置GOPATH环境变量。

  5. 从CMD/Powershell运行go get -u github.com/golang/protobuf/protoc-gen-go。这应该将二进制文件安装到%GOPATH%/bin

  6. 将确切的%GOPATH%/bin添加到 PATH 环境变量中。

  7. 打开一个新的CMD/Powershell,导航到您的.proto文件,然后运行protoc --go_out=. *.proto


引用:

  1. 如何在Windows中安装protoc-gen-go(Go协议缓冲区编译器插件)?
  2. protoc-gen-go:protoc 无法在 Windows 中编译

相关内容

最新更新