google / protobuf.dart

Runtime library for Dart protobufs
https://pub.dev/packages/protobuf
BSD 3-Clause "New" or "Revised" License
527 stars 183 forks source link

Failed on 'protoc ./*.proto --dart_out=grpc:./dart',"--dart_out: protoc-gen-dart: Plugin output is unparseable" #376

Closed hjlp20150803 closed 4 years ago

hjlp20150803 commented 4 years ago

pluginoutput.txt When I tried to 'protoc ./*.proto --dart_out=grpc:./dart',it failed and showed "--dart_out: protoc-gen-dart: Plugin output is unparseable".

$ pub global activate protoc_plugin 19.0.1
Package protoc_plugin is currently active at version 19.0.1.
Resolving dependencies... (2.6s)^C
$ dart --version
Dart VM version: 2.9.0-11.0.dev.flutter-6489a0c68d (be) (Wed May 27 05:50:13 2020 +0000) on "macos_x64"
$ pub --version
Pub 2.8.3

test.proto:
syntax = "proto3";

// option java_multiple_files = true;
// option java_package = "io.grpc.examples.helloworld";
// option java_outer_classname = "HelloWorldProto";

//package agent;
package bridge;

message LoadKeysRequest {
    string Addr = 1; 
    string RPass = 2; 
    string IPass = 3; 
    string N = 4;
    string U = 5;
}
message LoadKeysFromRequest {
    string Pass=1; 
    //BasicDataLocation byte
    string FileName=2; 
}

// The greeting service definition.
service Greeter {
  // Sends a greeting
  rpc SayHello (HelloRequest) returns (HelloReply) {}
}

// The request message containing the user's name.
message HelloRequest {
  string name = 1;
}

// The response message containing the greetings
message HelloReply {
  string message = 1;
}

$ protoc  ./test.proto --dart_out=grpc:./dart
--dart_out: protoc-gen-dart: Plugin output is unparseable:                                                                   \rz\340=\n\014test.pb.dartz\317=///\n//  Generated code. Do not modify.\n//  source: test.proto\n//\n// @dart = 2.3\n// ignore_for_file: camel_case_types,non_constant_identifier_names,library_prefixes,unused_import,unused_shown_name,return_of_invalid_type\n\nimport \'dart:core\' as $core;\n\nimport \'package:protobuf/protobuf.dart\' as $pb;\n\nclass LoadKeysRequest extends $pb.GeneratedMessage {\n  static final $pb.BuilderInfo _i = $pb.BuilderInfo(\'LoadKeysRequest\', package: const $pb.PackageName(\'bridge\'), createEmptyInstance: create)\n    ..aOS(1, \'Addr\', protoName: \'Addr\')\n    ..aOS(2, \'RPass\', protoName: \'RPass\')\n    ..aOS(3, \'IPass\', protoName: \'IPass\')\n    ..aOS(4, \'N\', protoName: \'N\')\n    ..aOS(5, \'U\', protoName: \'U\')\n    ..hasRequiredFields = false\n  ;\n\n  LoadKeysRequest._() : super();\n  factory LoadKeysRequest() => create();\n  factory LoadKeysRequest.fromBuffer($core.List<$core.int> i, [$pb.ExtensionRegistry r = $pb.ExtensionRegistry.EMPTY]) => create()..mergeFromBuffer(i, r);\n  factory LoadKeysRequest.fromJson($core.String i, [$pb.ExtensionRegistry r = $pb.ExtensionRegistry.EMPTY]) => create()..mergeFromJson(i, r);\n  LoadKeysRequest clone() => LoadKeysRequest()..mergeFromMessage(this);\n  LoadKeysRequest copyWith(void Function(LoadKeysRequest) updates) => super.copyWith((message) => updates(message as LoadKeysRequest));\n  $pb.BuilderInfo get info_ => _i;\n  @$core.pragma(\'dart2js:noInline\')\n  static LoadKeysRequest create() => LoadKeysRequest._();\n  LoadKeysRequest createEmptyInstance() => create();\n  static $pb.PbList<LoadKeysRequest> createRepeated() => $pb.PbList<LoadKeysRequest>();\n  @$core.pragma(\'dart2js:noInline\')\n  static LoadKeysRequest getDefault() => _defaultInstance ??= $pb.GeneratedMessage.$_defaultFor<LoadKeysRequest>(create);\n  static LoadKeysRequest _defaultInstance;\n\n  @$pb.TagNumber(1)\n  $core.String get addr => $_getSZ(0);\n  @$pb.TagNumber(1)\n  set addr($core.String v) { $_setString(0, v); }\n  @$pb.TagNumber(1)\n  $core.bool hasAddr() => $_has(0);\n  @$pb.TagNumber(1)\n  void clearAddr() => clearField(1);\n\n  @$pb.TagNumber(2)\n  $core.String get rPass => $_getSZ(1);\n  @$pb.TagNumber(2)\n  set rPass($core.String v) { $_setString(1, v); }\n  @$pb.TagNumber(2)\n  $core.bool hasRPass() => $_has(1);\n  @$pb.TagNumber(2)\n  void clearRPass() => clearField(2);\n\n  @$pb.TagNumber(3)\n  $core.String get iPass => $_getSZ(2);\n  @$pb.TagNumber(3)\n  set iPass($core.String v) { $_setString(2, v); }\n  @$pb.TagNumber(3)\n  $core.bool hasIPass() => $_has(2);\n  @$pb.TagNumber(3)\n  void clearIPass() => clearField(3);\n\n  @$pb.TagNumber(4)\n  $core.String get n => $_getSZ(3);\n  @$pb.TagNumber(4)\n  set n($core.String v) { $_setString(3, v); }\n  @$pb.TagNumber(4)\n  $core.bool hasN() => $_has(3);\n  @$pb.TagNumber(4)\n  void clearN() => clearField(4);\n\n  @$pb.TagNumber(5)\n  $core.String get u => $_getSZ(4);\n  @$pb.TagNumber(5)\n  set u($core.String v) { $_setString(4, v); }\n  @$pb.TagNumber(5)\n  $core.bool hasU() => $_has(4);\n  @$pb.TagNumber(5)\n  void clearU() => clearField(5);\n}\n\nclass LoadKeysFromRequest extends $pb.GeneratedMessage {\n  static final $pb.BuilderInfo _i = $pb.BuilderInfo(\'LoadKeysFromRequest\', package: const $pb.PackageName(\'bridge\'), createEmptyInstance: create)\n    ..aOS(1, \'Pass\', protoName: \'Pass\')\n    ..aOS(2, \'FileName\', protoName: \'FileName\')\n    ..hasRequiredFields = false\n  ;\n\n  LoadKeysFromRequest._() : super();\n  factory LoadKeysFromRequest() => create();\n  factory LoadKeysFromRequest.fromBuffer($core.List<$core.int> i, [$pb.ExtensionRegistry r = $pb.ExtensionRegistry.EMPTY]) => create()..mergeFromBuffer(i, r);\n  factory LoadKeysFromRequest.fromJson($core.String i, [$pb.ExtensionRegistry r = $pb.ExtensionRegistry.EMPTY]) => create()..mergeFromJson(i, r);\n  LoadKeysFromRequest clone() => LoadKeysFromRequest()..mergeFromMessage(this);\n  LoadKeysFromRequest copyWith(void Function(LoadKeysFromRequest) updates) => super.copyWith((message) => updates(message as LoadKeysFromRequest));\n  $pb.BuilderInfo get info_ => _i;\n  @$core.pragma(\'dart2js:noInline\')\n  static LoadKeysFromRequest create() => LoadKeysFromRequest._();\n  LoadKeysFromRequest createEmptyInstance() => create();\n  static $pb.PbList<LoadKeysFromRequest> createRepeated() => $pb.PbList<LoadKeysFromRequest>();\n  @$core.pragma(\'dart2js:noInline\')\n  static LoadKeysFromRequest getDefault() => _defaultInstance ??= $pb.GeneratedMessage.$_defaultFor<LoadKeysFromRequest>(create);\n  static LoadKeysFromRequest _defaultInstance;\n\n  @$pb.TagNumber(1)\n  $core.String get pass => $_getSZ(0);\n  @$pb.TagNumber(1)\n  set pass($core.String v) { $_setString(0, v); }\n  @$pb.TagNumber(1)\n  $core.bool hasPass() => $_has(0);\n  @$pb.TagNumber(1)\n  void clearPass() => clearField(1);\n\n  @$pb.TagNumber(2)\n  $core.String get fileName => $_getSZ(1);\n  @$pb.TagNumber(2)\n  set fileName($core.String v) { $_setString(1, v); }\n  @$pb.TagNumber(2)\n  $core.bool hasFileName() => $_has(1);\n  @$pb.TagNumber(2)\n  void clearFileName() => clearField(2);\n}\n\nclass HelloRequest extends $pb.GeneratedMessage {\n  static final $pb.BuilderInfo _i = $pb.BuilderInfo(\'HelloRequest\', package: const $pb.PackageName(\'bridge\'), createEmptyInstance: create)\n    ..aOS(1, \'name\')\n    ..hasRequiredFields = false\n  ;\n\n  HelloRequest._() : super();\n  factory HelloRequest() => create();\n  factory HelloRequest.fromBuffer($core.List<$core.int> i, [$pb.ExtensionRegistry r = $pb.ExtensionRegistry.EMPTY]) => create()..mergeFromBuffer(i, r);\n  factory HelloRequest.fromJson($core.String i, [$pb.ExtensionRegistry r = $pb.ExtensionRegistry.EMPTY]) => create()..mergeFromJson(i, r);\n  HelloRequest clone() => HelloRequest()..mergeFromMessage(this);\n  HelloRequest copyWith(void Function(HelloRequest) updates) => super.copyWith((message) => updates(message as HelloRequest));\n  $pb.BuilderInfo get info_ => _i;\n  @$core.pragma(\'dart2js:noInline\')\n  static HelloRequest create() => HelloRequest._();\n  HelloRequest createEmptyInstance() => create();\n  static $pb.PbList<HelloRequest> createRepeated() => $pb.PbList<HelloRequest>();\n  @$core.pragma(\'dart2js:noInline\')\n  static HelloRequest getDefault() => _defaultInstance ??= $pb.GeneratedMessage.$_defaultFor<HelloRequest>(create);\n  static HelloRequest _defaultInstance;\n\n  @$pb.TagNumber(1)\n  $core.String get name => $_getSZ(0);\n  @$pb.TagNumber(1)\n  set name($core.String v) { $_setString(0, v); }\n  @$pb.TagNumber(1)\n  $core.bool hasName() => $_has(0);\n  @$pb.TagNumber(1)\n  void clearName() => clearField(1);\n}\n\nclass HelloReply extends $pb.GeneratedMessage {\n  static final $pb.BuilderInfo _i = $pb.BuilderInfo(\'HelloReply\', package: const $pb.PackageName(\'bridge\'), createEmptyInstance: create)\n    ..aOS(1, \'message\')\n    ..hasRequiredFields = false\n  ;\n\n  HelloReply._() : super();\n  factory HelloReply() => create();\n  factory HelloReply.fromBuffer($core.List<$core.int> i, [$pb.ExtensionRegistry r = $pb.ExtensionRegistry.EMPTY]) => create()..mergeFromBuffer(i, r);\n  factory HelloReply.fromJson($core.String i, [$pb.ExtensionRegistry r = $pb.ExtensionRegistry.EMPTY]) => create()..mergeFromJson(i, r);\n  HelloReply clone() => HelloReply()..mergeFromMessage(this);\n  HelloReply copyWith(void Function(HelloReply) updates) => super.copyWith((message) => updates(message as HelloReply));\n  $pb.BuilderInfo get info_ => _i;\n  @$core.pragma(\'dart2js:noInline\')\n  static HelloReply create() => HelloReply._();\n  HelloReply createEmptyInstance() => create();\n  static $pb.PbList<HelloReply> createRepeated() => $pb.PbList<HelloReply>();\n  @$core.pragma(\'dart2js:noInline\')\n  static HelloReply getDefault() => _defaultInstance ??= $pb.GeneratedMessage.$_defaultFor<HelloReply>(create);\n  static HelloReply _defaultInstance;\n\n  @$pb.TagNumber(1)\n  $core.String get message => $_getSZ(0);\n  @$pb.TagNumber(1)\n  set message($core.String v) { $_setString(0, v); }\n  @$pb.TagNumber(1)\n  $core.bool hasMessage() => $_has(0);\n  @$pb.TagNumber(1)\n  void clearMessage() => clearField(1);\n}\n\nz\361\001\n\020test.pbenum.dartz\334\001///\n//  Generated code. Do not modify.\n//  source: test.proto\n//\n// @dart = 2.3\n// ignore_for_file: camel_case_types,non_constant_identifier_names,library_prefixes,unused_import,unused_shown_name,return_of_invalid_type\n\nz\202\t\n\020test.pbjson.dartz\355\010///\n//  Generated code. Do not modify.\n//  source: test.proto\n//\n// @dart = 2.3\n// ignore_for_file: camel_case_types,non_constant_identifier_names,library_prefixes,unused_import,unused_shown_name,return_of_invalid_type\n\nconst LoadKeysRequest$json = const {\n  \'1\': \'LoadKeysRequest\',\n  \'2\': const [\n    const {\'1\': \'Addr\', \'3\': 1, \'4\': 1, \'5\': 9, \'10\': \'Addr\'},\n    const {\'1\': \'RPass\', \'3\': 2, \'4\': 1, \'5\': 9, \'10\': \'RPass\'},\n    const {\'1\': \'IPass\', \'3\': 3, \'4\': 1, \'5\': 9, \'10\': \'IPass\'},\n    const {\'1\': \'N\', \'3\': 4, \'4\': 1, \'5\': 9, \'10\': \'N\'},\n    const {\'1\': \'U\', \'3\': 5, \'4\': 1, \'5\': 9, \'10\': \'U\'},\n  ],\n};\n\nconst LoadKeysFromRequest$json = const {\n  \'1\': \'LoadKeysFromRequest\',\n  \'2\': const [\n    const {\'1\': \'Pass\', \'3\': 1, \'4\': 1, \'5\': 9, \'10\': \'Pass\'},\n    const {\'1\': \'FileName\', \'3\': 2, \'4\': 1, \'5\': 9, \'10\': \'FileName\'},\n  ],\n};\n\nconst HelloRequest$json = const {\n  \'1\': \'HelloRequest\',\n  \'2\': const [\n    const {\'1\': \'name\', \'3\': 1, \'4\': 1, \'5\': 9, \'10\': \'name\'},\n  ],\n};\n\nconst HelloReply$json = const {\n  \'1\': \'HelloReply\',\n  \'2\': const [\n    const {\'1\': \'message\', \'3\': 1, \'4\': 1, \'5\': 9, \'10\': \'message\'},\n  ],\n};\n\nz\325\r\n\020test.pbgrpc.dartz\300\r///\n//  Generated code. Do not modify.\n//  source: test.proto\n//\n// @dart = 2.3\n// ignore_for_file: camel_case_types,non_constant_identifier_names,library_prefixes,unused_import,unused_shown_name,return_of_invalid_type\n\nimport \'dart:async\' as $async;\n\nimport \'dart:core\' as $core;\n\nimport \'package:grpc/service_api.dart\' as $grpc;\nimport \'test.pb.dart\' as $0;\nexport \'test.pb.dart\';\n\nclass GreeterClient extends $grpc.Client {\n  static final _$sayHello = $grpc.ClientMethod<$0.HelloRequest, $0.HelloReply>(\n      \'/bridge.Greeter/SayHello\',\n      ($0.HelloRequest value) => value.writeToBuffer(),\n      ($core.List<$core.int> value) => $0.HelloReply.fromBuffer(value));\n\n  GreeterClient($grpc.ClientChannel channel, {$grpc.CallOptions options})\n      : super(channel, options: options);\n\n  $grpc.ResponseFuture<$0.HelloReply> sayHello($0.HelloRequest request,\n      {$grpc.CallOptions options}) {\n    final call = $createCall(_$sayHello, $async.Stream.fromIterable([request]),\n        options: options);\n    return $grpc.ResponseFuture(call);\n  }\n}\n\nabstract class GreeterServiceBase extends $grpc.Service {\n  $core.String get $name => \'bridge.Greeter\';\n\n  GreeterServiceBase() {\n    $addMethod($grpc.ServiceMethod<$0.HelloRequest, $0.HelloReply>(\n        \'SayHello\',\n        sayHello_Pre,\n        false,\n        false,\n        ($core.List<$core.int> value) => $0.HelloRequest.fromBuffer(value),\n        ($0.HelloReply value) => value.writeToBuffer()));\n  }\n\n  $async.Future<$0.HelloReply> sayHello_Pre(\n      $grpc.ServiceCall call, $async.Future<$0.HelloRequest> request) async {\n    return sayHello(call, await request);\n  }\n\n  $async.Future<$0.HelloReply> sayHello(\n      $grpc.ServiceCall call, $0.HelloRequest request);\n}\n
a14n commented 4 years ago

Facing the same issue. @sigurdm any idea?

a14n commented 4 years ago

I face it with any.proto :

protoc --dart_out=grpc:"$OUTPUT" -Iprotos google/protobuf/any.proto

All the versions are up to date:

a14n commented 4 years ago

It looks like it was an issue caused by an issue in dart SDK. I accidentally used the dart SDK packaged with flutter. I was then on Dart VM version: 2.9.0-11.0.dev.flutter-e007545c42 and this version was problematic. Updating the dart SDK fixes the issue.

hjlp20150803 commented 4 years ago

It looks like it was an issue caused by an issue in dart SDK. I accidentally used the dart SDK packaged with flutter. I was then on Dart VM version: 2.9.0-11.0.dev.flutter-e007545c42 and this version was problematic. Updating the dart SDK fixes the issue.

you are right, it's ok now