协议 --dart_out=grpc:. -Iprotos helloworld.proto - 目录不存在

protoc --dart_out=grpc:. -Iprotos helloworld.proto - directory does not exist

如何指定目录 - 只有当我将 helloworld.proto 放在名为 protos

的文件夹中时,以下内容才有效
protoc --dart_out=. -Iprotos helloworld.proto
protos: warning: directory does not exist.
helloworld.proto: File does not reside within any path specified using --proto_path (or -I).  You must specify a --proto_path which encompasses this file.  Note that the proto_path must be an exact prefix of the .proto file names -- protoc is too dumb to figure out when two paths (e.g. absolute and relative) are equivalent (it's harder than you think).

在这种情况下,您不需要包含 -I,因为 helloworld.proto 在当前工作目录中。

-I(原始路径)被 protoc 用来引用不在当前工作目录中的目录。例如,如果您要使用 ${PWD}/helloworld.proto,我认为您需要 -I=${PWD}。即使 ${PWD} 等同于当前工作目录,protoc 也会看到一个带有目录前缀的原型,并希望将其添加到原型路径中。

通常,当您有非本地的 protobuf 导入时,您需要添加一个 proto 路径。然后,您添加 -I= 并列出可能找到这些导入的目录。