Golang中从proto文件生成go文件时遇到"Unimplemented name"错误如何解决

Golang中从proto文件生成go文件时遇到"Unimplemented name"错误如何解决 每次生成代码时,我都会遇到这个错误:

error-image

这是我的 proto 文件:

proto-file

我用来生成代码的命令是:

protoc pb/pb.proto --go-grpc_out=./pb

请帮我解决这个问题 谢谢

1 回复

更多关于Golang中从proto文件生成go文件时遇到"Unimplemented name"错误如何解决的实战系列教程也可以访问 https://www.itying.com/category-94-b0.html


这个错误是因为 protoc-gen-go-grpc 插件版本与 protoc-gen-go 不兼容导致的。你需要确保两个插件版本匹配。

解决方案:

1. 安装匹配版本的插件

# 卸载旧版本
go uninstall google.golang.org/protobuf/cmd/protoc-gen-go
go uninstall google.golang.org/grpc/cmd/protoc-gen-go-grpc

# 安装最新版本(推荐)
go install google.golang.org/protobuf/cmd/protoc-gen-go@latest
go install google.golang.org/grpc/cmd/protoc-gen-go-grpc@latest

2. 更新生成命令

使用 --go_out--go-grpc_out 分别生成:

protoc --go_out=./pb --go-grpc_out=./pb pb/pb.proto

或者使用逗号分隔参数:

protoc --go_out=./pb --go-grpc_out=require_unimplemented_servers=false:./pb pb/pb.proto

3. 完整示例命令

# 确保 protoc 能找到插件
export PATH="$PATH:$(go env GOPATH)/bin"

# 生成代码
protoc -I=. \
  --go_out=./pb \
  --go-grpc_out=./pb \
  pb/pb.proto

4. 如果使用 go modules,确保 go.mod 中有正确的依赖

// go.mod
require (
    google.golang.org/grpc v1.53.0
    google.golang.org/protobuf v1.28.1
)

然后运行:

go mod tidy

5. 验证安装版本

# 检查插件版本
protoc-gen-go --version
protoc-gen-go-grpc --version

版本应该类似:

  • protoc-gen-go: v1.28
  • protoc-gen-go-grpc: v1.2

执行这些步骤后,重新生成代码应该能解决 “Unimplemented name” 错误。

回到顶部