我将所有原始文件保存在一个文件夹中。概述:
protos
|
|__auth
|
|__some_other
Run Code Online (Sandbox Code Playgroud)
里面的auth目录我有auth_service.proto user.proto等。
但我在导入定义表单时遇到问题user.proto
在auth_service.proto:
syntax="proto3";
package auth;
import "auth/user.proto"; // Import "auth/user.proto" was not found or had errors.
message SomeMessage {
User user = 1; // user is not defined
}
Run Code Online (Sandbox Code Playgroud)
user.proto 具有相同的包名:
syntax="proto3";
package auth;
message User{}
Run Code Online (Sandbox Code Playgroud)
协议版本:libprotoc : 3.19.4
这可能很棘手。
考虑它的一种方法是,您需要确定导入路径的根,然后原型导入是相对于它的。
假设${PWD}是 的父级protos。
示例#1:
如果您使用${PWD}作为proto_path:
protoc \
--proto_path=${PWD} \
--go_out=${PWD} \
${PWD}/protos/auth/auth_service.proto \
${PWD}/protos/auth/user.proto
Run Code Online (Sandbox Code Playgroud)
那么导入应该是import "protos/auth/user.proto";
示例#2:
如果您使用protos作为proto_path:
protoc \
--proto_path=${PWD}/protos \
--go_out=${PWD} \
${PWD}/protos/auth/auth_service.proto \
${PWD}/protos/auth/user.proto
Run Code Online (Sandbox Code Playgroud)
那么导入应该是import "auth/user.proto";.
注意在所有情况下,
proto文件引用必须以(之一)a 为前缀proto_path。
settings.json:
"protoc": {
"path": "${workspaceRoot}/protoc-21.2-linux-x86_64/bin/protoc",
"compile_on_save": true,
"options": [
"--proto_path=${workspaceRoot}/protoc-21.2-linux-x86_64/include",
"--proto_path=${workspaceRoot}/protos",
"--go_out=${workspaceRoot}"
]
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
11493 次 |
| 最近记录: |