Adr*_*ian 12 go protocol-buffers grpc
我正在尝试使用google/protobuf/timestamp.proto
gRPC插件和Golang.这就是我的运作方式protoc
:
protoc -I ./ ./*.proto --go_out=plugins=grpc:.
Run Code Online (Sandbox Code Playgroud)
这是我的.proto
:
#domain.proto
syntax = "proto3";
option java_multiple_files = true;
option java_package = "com.viant.xyz";
option java_outer_classname = "domain";
import "google/protobuf/timestamp.proto";
message Foo {
Timestamp modifiedTime = 1;
...
}
Run Code Online (Sandbox Code Playgroud)
我看到以下错误:
domain.proto: Import "google/protobuf/timestamp.proto" was not found or had errors.
domain.proto:44:5: "Timestamp" is not defined.
Run Code Online (Sandbox Code Playgroud)
我错过了什么,或者还没有支持?
小智 8
添加/usr/local/include
以包含要使用的路径/usr/local/include/google/api/timestamp.proto
:
protoc -I/usr/local/include -I. --go_out=plugins=grpc:. *.proto
Run Code Online (Sandbox Code Playgroud)
正如你所看到的timestamp.proto
,Timestamp
存在于包中google.protobuf
,所以你必须修改使用Timestamp
如下:
message Foo {
google.protobuf.Timestamp modifiedTime = 1;
...
}
Run Code Online (Sandbox Code Playgroud)
尚不完全支持它,但是您可以通过更改使其工作
message Foo {
google.protobuf.Timestamp modifiedTime = 1;
...
}
Run Code Online (Sandbox Code Playgroud)
并通过修复生成的文件导入
import google_protobuf "google/protobuf/timestamp.pb"
Run Code Online (Sandbox Code Playgroud)
至
import google_protobuf "github.com/golang/protobuf/ptypes/timestamp"
Run Code Online (Sandbox Code Playgroud)
就我而言,问题出在我的 Fedora 29 设置中。
# Install Protoc compiler. By default it is 3.5.0 version
sudo dnf -y install protoc
Run Code Online (Sandbox Code Playgroud)
这是我的错误设置。所以我用以下步骤修复了它。也要注意变灰的命令行。
# Uninstall old 3.5.0 version
sudo dnf remove protobuf
# Make sure you grab the latest version
curl -OL
https://github.com/protocolbuffers/protobuf/releases/download/v3.6.1/protoc-3.6.1-linux-x86_64.zip
# Unzip
unzip protoc-3.6.1-linux-x86_64.zip -d protoc3
# Move protoc to /usr/local/bin/
sudo mv protoc3/bin/* /usr/local/bin/
# Move protoc3/include to /usr/local/include/
sudo mv protoc3/include/* /usr/local/include/
# Optional: change owner
sudo chown $USER /usr/local/bin/protoc
sudo chown -R $USER /usr/local/include/google
Run Code Online (Sandbox Code Playgroud)
在此之后,我可以使用:
import "google/protobuf/timestamp.proto";
message Session {
google.protobuf.Timestamp create_time = 1;
}
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
12762 次 |
最近记录: |