-1

开始,一切正常。make我没有 VisualStudio ,但我有巧克力(不知道是否可能是问题)

micro new我用这样的方式引导服务。

λ micro new my.test
Creating service my.test

.
├── micro.mu
├── main.go
├── generate.go
├── handler
│   └── my.test.go
├── proto
│   └── my.test.proto
├── Dockerfile
├── Makefile
├── README.md
├── .gitignore
└── go.mod


download protoc zip packages (protoc-$VERSION-$PLATFORM.zip) and install:

visit https://github.com/protocolbuffers/protobuf/releases

download protobuf for micro:

go get -u github.com/golang/protobuf/proto
go get -u github.com/golang/protobuf/protoc-gen-go
go get github.com/micro/micro/v3/cmd/protoc-gen-micro

compile the proto file my.test.proto:

cd my.test
make proto

安装依赖项,一切都很好。然后我搬到 my.test 并在出现make proto此错误后

protoc --proto_path=. --micro_out=. --go_out=:. proto/proto.test.proto
proto/proto.test.proto:7:14: Expected "{".
make: *** [Makefile:16: proto] Error 1 

我有所有依赖项,我的 PATH 很好,但我不知道问题出在哪里。

编辑:这是我的原型,由 micro 方便地生成

syntax = "proto3";

package proto.test;

option go_package = "./proto;proto.test";

service Proto.Test {
    rpc Call(Request) returns (Response) {}
    rpc Stream(StreamingRequest) returns (stream StreamingResponse) {}
    rpc PingPong(stream Ping) returns (stream Pong) {}
}

message Message {
    string say = 1;
}

message Request {
    string name = 1;
}

message Response {
    string msg = 1;
}

message StreamingRequest {
    int64 count = 1;
}

message StreamingResponse {
    int64 count = 1;
}

message Ping {
    int64 stroke = 1;
}

message Pong {
    int64 stroke = 1;
}
4

2 回答 2

2

Go 包名称不能包含点 - 它不会编译:

$ cat pkg.go

package dot.test

$ go build

./pkg.go:1:12: syntax error: unexpected .

因此必须确保生成的代码生成有效的 Go 包名称。


从 中Go spec包子句定义为:

包子句开始每个源文件并定义文件所属的包。

PackageClause  = "package" PackageName .
PackageName    = identifier .

和一个标识符

... 一个或多个字母和数字的序列。标识符中的第一个字符必须是字母。

identifier = letter { letter | unicode_digit } .
于 2021-09-11T13:18:09.973 回答
0

在阅读了一些基础知识后,我发现了问题。即使 proto 文件是由 micro 生成的,这个service Proto.Test 第 7 行的代码也是问题,因为点。我的意思是,替换它以 service Test 解决问题。现在我不知道为什么。任何解释都会受到重视。顺便说一句,我在窗户里

于 2021-09-11T02:43:53.013 回答