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

moh*_*ari 5 windows go protocol-buffers

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

go get -u github.com/golang/protobuf/protoc-gen-go

执行以下命令后

.\protoc.exe --go_out=. 人物原型

我收到以下错误

--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;
}
Run Code Online (Sandbox Code Playgroud)

小智 5

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

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

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

归零

谷歌开发者


M. *_*ami 3

描述

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

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


程序

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

  2. 解压缩文件,然后将其位置添加protoc.exe到 PATH 环境变量中。另外,也没有太大必要,直接复制protoc.exe到即可GOPATH

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

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

  5. go get -u github.com/golang/protobuf/protoc-gen-go从 CMD/Powershell运行。这应该将二进制文件安装到%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 中编译