go-grpc 导入“google/protobuf/struct.proto”未找到或有错误

问题描述

我正在使用以下命令为 golang 生成 proto 代码

protoc --go_out=../generated --go_opt=paths=source_relative \
    --go-grpc_out=../generated --go-grpc_opt=paths=source_relative \
    *.proto

我使用内置的 google/protobuf/struct.proto 来处理非结构化数据。但是,我收到一条错误消息,指出未定义“google.protobuf.Struct”。

解决方法

protoc 包含 ./bin./include 目录。

./include 应该包括例如google/protobuf/struct.proto

如果您将 PATH 正确设置为 ./protoc../binstruct.proto 应包含在编译中。

示例

go.mod

module github.com/some/test

go 1.16

require google.golang.org/protobuf v1.26.0

test.proto

syntax = "proto3";

package test;

import "google/protobuf/struct.proto";

option go_package = "github.com/some/test;test";

message SomeRequest {
  google.protobuf.Struct some_struct = 1;
}

那么:

protoc \
--go_out=. \
--go_opt=module=github.com/some/test  \
test.proto