🐈
【Dart/gRPC】'google/protobuf/timestamp.pb.dart' が存在しないため、importエラー発生
背景
下記、Protocol Buffers のドキュメントを参照し、Dart の Tutorial を実施していた。
Tutorial に沿って、
-
addressbook.proto
ファイルを作成し、 - protoc コマンドを実行し、
.proto
から.dart
へコンパイル実行すると、 - コンパイル後に
addressbook.pb.dart
ファイルが生成された。
addressbook.pb.dart
内を確認したところ、'google/protobuf/timestamp.pb.dart'
ファイルが import できていない旨の、下記エラーが発生していた。
エラーメッセージのテキスト
Target of URI hasn't been generated: 'google/protobuf/timestamp.pb.dart'.
Try running the generator that will generate the file referenced by the URI.
原因
原因は、google/protobuf/timestamp.pb.dart
ファイルが存在しないため、import エラー発生。
解決策
protoc コマンドの引数にgoogle/protobuf/timestamp.proto
を追加指定して実行する。
結果、google/protobuf/timestamp.pb.dart
ファイルが生成され、import できるようになり、エラー解消される。
変更前
# 変更前
protoc -I=./proto/ --dart_out=./proto/ ./proto/addressbook.proto
# 変更後
protoc -I=./proto/ --dart_out=./proto/ ./proto/addressbook.proto google/protobuf/timestamp.proto
google/protobuf/timestamp.proto とは?
-
google/protobuf/timestamp.proto
はProtocol Buffers Well-Known Types
の 1 つな様子。
Protocol Buffers のドキュメントだと、下記に記載あり。
https://protobuf.dev/reference/protobuf/google.protobuf/ -
Protocol Buffers Well-Known Types
は、下記の通り、Protocol Buffers の GitHub リポジトリ内に.proto
ファイルとして、デフォルトで用意されている様子。
以上
Discussion