这个问题和这个问题是一样的,How do I use gradle to generate go grpc code?,但是因为这个问题还没有得到回答,所以我再问一遍。我制作了一个简化的Gradle项目,其结构类似于以下内容: ├── build.gradle
└── src
└── main
└── proto
└── helloworld.proto build.gradle读取的位置 buildscript {
repositories {
mavenCentral()
}
dependencies
我无法为grpc生成原始缓冲区文件
protoc -I=./ --go_out=plugins=grpc:. code/proto/*
--go_out: protoc-gen-go: plugins are not supported; use 'protoc --go-grpc_out=...' to generate gRPC
See https://grpc.io/docs/languages/go/quickstart/#regenerate-grpc-code for more information.
make: *** [protoc-gen] Error 1
我很难弄明白protoc命令和go插件。
在以下方面有什么不同:
protoc \
# Directory where you want the compiler to write your Go output.
--go_out=.
# vs ?
--go_opt=paths=source_relative
# vs ?
--go-grpc_out=.
# vs ?
--go-grpc_opt=paths=source_relative
如果--go_opt生成
<name>.pb.go文件
和--go-grpc_opt
我对此有点困惑。档案结构:
/Project
generate.sh
gateway/
cmd/
main.go
pkg/
gatewaypb/
proto/
service.proto
我的generate.sh是这样的:
set -e
module="github.com/my-org/grpc-project"
// Find all dirs with .proto files in them
for proto in */proto; do
dir=$(ec
我是新来的协议缓冲区和gRPC的东西。现在,我正在尝试使用grpc +grpc网关构建一个客户机/服务器架构。
我试着学习一些例子,但我总是遇到同样的问题。在用protoc生成代码之后,我运行go build并得到以下错误:
proto/helloworld/hello_world.pb.gw.go:64:2: cannot use msg (type *HelloReply) as type protoreflect.ProtoMessage in return argument:
*HelloReply does not implement protoreflect.Pro
我试着用bazel运行一些grpc测试。我正在使用"google.golang.org/grpc/credentials/insecure"不安全地拨号。
在运行bazel test ...时,我会得到以下错误:
no such package '@org_golang_google_grpc//credentials/insecure': BUILD file not found in directory 'credentials/insecure' of external repository @org_golang_google_grpc.
我在经营一个码头:
docker run -p 8080:8080 -t admin
localhost:8080没有响应,但我运行的是go run admin/main.go --我可以到达localhost:8080 --我知道关于这个问题有很多问题,我查看了所有内容:
使用正确的端口: 8080:8080
在本地机器上运行时,我能够到达服务器:检查服务器是否服务于正确的端口。
下面是我的Dockerfile --公开了正确的端口8080:
FROM --platform=linux/amd64 golang:1.19.3-bullseye
# Install grpc
RUN go i
使用正式的golang停靠映像,我可以使用protoc命令生成x.pb.go和x_grpc.pb.go文件。问题在于它使用的是最新版本,而我希望生成那些使用go.mod文件中的任何版本的版本。
我尝试从golang映像开始,然后获取我的项目的go.mod文件,获取依赖项并尝试从那里生成。这是我的文档:
FROM golang:1.15
WORKDIR /app
RUN apt-get update
RUN apt install -y protobuf-compiler
COPY go.* .
RUN go mod download
RUN go get all
RUN export