я хотел сгенерировать прототипы для дротика
protoc --proto_path=pb/proto --dart_out=lib/api/grpc/pb/gen --plugin=path/to/plugin/.pub-cachce/bin pb/proto/*.proto
но он говорит
path/to/project/pb/proto/user.proto: File not found.
path/to/project/pb/proto/product.proto: File not found.
badget.proto:5:1: Import "path/to/project/pb/proto/user.proto" was not found or had errors.
badget.proto:6:1: Import "path/to/project/pb/proto/product.proto" was not found or had errors.
badget.proto:24:3: "packagename.pb.user.Actor" is not defined.
badget.proto:37:3: "packagename.pb.product.Product" is not defined.
badget.proto:65:22: "packagename.pb.user.Actor" is not defined.
!!!Я активировал плагин до этого !!! путь к проекту не является полным путем (он начинается с пути, настроенного в настройках)
прототипы => badgte.прото:
syntax = "proto3";
package packagename.pb.badget;
import "path/to/project/pb/proto/user.proto";
import "path/to/project/pb/proto/product.proto";
import "google/protobuf/timestamp.proto";
blah blah blah;
пользователь.прото:
syntax = "proto3";
package packagename.pb.user;
blah blah blah;
продукт.прото:
syntax = "proto3";
package packagename.pb.product;
blah blah blah;
Возможно, вам придется изменить порядок вещей, чтобы путь, указанный в --proto_path
, был родительским каталогом путей, которые вы используете для import
s.
Пути в утверждениях import
относятся к тому, что вы предоставили --proto_path
. Таким образом, для --proto_path=pb/proto
и оператора import "path/to/project/pb/proto/user.proto"
protoc
будет искать файл "pb/proto/path/to/project/pb/proto/user.proto"
, который, вероятно, не соответствует вашим намерениям.
Возможно, вы захотите рассмотреть что-то вроде protoc --proto_path=path/to/project
, чтобы ваши import
утверждения были короче/более переносимы:
import "pb/proto/user.proto";
Кроме того, проверьте это, чтобы узнать, относится ли это к вашей ситуации.
Наконец, в вашем сообщении есть несколько опечаток («.pub-cachce», «badget» vs. «badgte» и т. д.), поэтому вы можете проверить и их, если опечатки присутствуют в вашем реальном коде. .
tnks для точки, путем перенастройки пути в фиксированном