🐈

【Dart/gRPC】'google/protobuf/timestamp.pb.dart' が存在しないため、importエラー発生

2023/07/25に公開

背景

下記、Protocol Buffers のドキュメントを参照し、Dart の Tutorial を実施していた。
https://protobuf.dev/getting-started/darttutorial/

Tutorial に沿って、

  1. addressbook.protoファイルを作成し、
  2. protoc コマンドを実行し、.protoから.dartへコンパイル実行すると、
  3. コンパイル後に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 とは?

以上

Discussion