Как сгенерировать или скомпилировать файл flutter gRPC .proto в dart

Я пытаюсь сгенерировать прото-файл в файл dart с помощью protoc-plugin, следуя этой инструкции https://grpc.io/docs/quickstart/dart/, но когда я запускаю эту командную строку

$ protoc --dart_out=grpc:lib/src/generated -Iprotos protos/helloworld.proto

этот тип ошибки возникает

PS G:\Flutter Implelemt\helloworld> protoc --dart_out=grpc:lib/src/generated -Iprotos 
protos/helloworld.proto
protos: warning: directory does not exist.
Could not make proto path relative: protos/helloworld.proto: No such file or directory
PS G:\Flutter Implelemt\helloworld> 

используемые зависимости

grpc: ^0.6.6
protobuf: ^1.1.0
protoc_plugin: ^19.2.0+1

helloworld.proto

syntax = "proto3";
package helloworld;

service  Greeter  { 
       rpc  SayHello  ( HelloRequest )  returns  ( HelloReply )  {} 
  }

  message  HelloRequest  { 
      string  name  =  1 ; 
    }

  message  HelloReply  { 
       string  message  =  1 ; 
  }

Я также пробую следующие команды

PS G:\Flutter Implelemt\helloworld> protoc --dart_out=grpc:lib/src/pb --proto_path 
lib/protos/helloworld.proto  
Missing input file.
PS G:\Flutter Implelemt\helloworld> 

как сгенерировать или скомпилировать файл .proto в dart / flutter

Заранее спасибо :)


person Tushar Nikam    schedule 09.12.2020    source источник
comment
Привет, ты решил свою проблему?   -  person ch271828n    schedule 31.12.2020


Ответы (2)


Убедитесь, что ваш выходной каталог существует и относительный путь к вашему входному файлу правильный. См. Сообщение об ошибке:

protos: warning: directory does not exist.
Could not make proto path relative: protos/helloworld.proto: No such file or directory

мы можем знать, что protos/helloworld.proto, похоже, не существует.

person ch271828n    schedule 09.12.2020

Обновить

Я решаю указанную выше проблему

примечание: я использую ОС Windows 10 с редактором VSCode

Шаги по решению

1. Установите Dart

2 Установите плагин компилятора протокола для Dart (protoc-gen-dart), используя следующую команду:

pub global activate protoc_plugin

3 Обновите свой PATH, чтобы компилятор протокола смог найти плагин:

  • открытые переменные среды
  • C: \ Users [Имя пользователя] \ AppData \ Local \ Pub \ Cache \ bin

4 измените каталог на папку lib и выполните следующие команды.

  • вставьте свою папку proto в каталог lib

  • вот так flutterProjectName / lib / protos / protoFileName.proto

     protoc --dart_out=grpc:src/generated -Iprotos protos/helloworld.proto
    

если вы видите эту ошибку file missing or file not found then replace this **-Iprotos** name with **--proto_path**

Примечание. если вы видите ошибку, похожую на эту двоичную, попробуйте следующий метод

flutter pub cache repair 

или удалите папку Cache в этом каталоге C: \ Users [Имя пользователя] \ AppData \ Local \ Pub \ Cache \ bin

если все вышеперечисленное не удается, удалите папку кеша или также проверьте версию, обновленную в файле блокировки (временная блокировка дает мне проблему с обновлением номера версии)

Спасибо

person Tushar Nikam    schedule 10.12.2020