モデルの一部にjson_serializableを使用しているダーツ ソース ジェネレーターを作成しています。最初、ソース生成はしばらくの間正常に機能していましたが、実行するdart run build_runner build --delete-conflicting-outputs
とエラーが発生します:
[情報] ビルド スクリプトの生成が完了しました。410 ミリ秒かかりました。
[情報] キャッシュされたアセット グラフの読み取りが完了しました。62 ミリ秒かかりました。
[情報] 最後のビルドが完了してからの更新を確認しています。492 ミリ秒かかりました。
[警告] ビルド スクリプトが更新されたため、アセット グラフを無効にしています。
[情報] 以前のビルドからの出力をクリーンアップしています。完了、
4 ミリ秒かかりました [情報] ビルド スクリプトの生成が完了しました、79 ミリ秒かかりました
[警告] アセット グラフがないため、コンパイル済みのビルド スクリプトが無効になりました。
[警告] lib/settings/config.dart:3:6: エラー: 'lib/settings/config.g.dart' の読み取り中にエラーが発生しました: そのようなファイルまたはディレクトリ
部分はありません 'config.g.dart';
^
lib/settings/config.dart:3:6: エラー: 「lib/settings/config.g.dart」は「part of」宣言がないため、一部として使用できません。
部分 'config.g.dart';
^
[情報] ビルド スクリプトのプリコンパイル... 完了、785 ミリ秒かかりました
[重大] ビルド スクリプト .dart_tool/build/entrypoint/build.dart のプリコンパイルに失敗しました。これは、誤って構成されたビルダー定義が原因である可能性があります。
私のパッケージの依存関係は次のとおりです。
dependencies:
path: ^1.8.1
yaml: ^3.1.0
dotenv: ^3.0.0
recase: ^4.0.0
json_annotation: ^4.4.0
code_builder: ^4.1.0
dart_style: ^2.2.1
dev_dependencies:
lints: ^1.0.0
test: ^1.20.1
build_runner: ^2.1.7
json_serializable: ^6.1.3
build.yaml は次のようになります。
builders:
map_gen:
import: "package:map_gen/map_gen.dart"
builder_factories: [ "build" ]
build_extensions: { "$lib$": [ ".map.dart" ] }
auto_apply: dependents
build_to: source
なぜこれが起こっているのか、または独自のジェネレーターを提供するパッケージにソースジェネレーターを使用することに制限があるのか を理解できませんでした。これを解決する方法はありますか?
編集
私はvscodeを使用していますが、ターミナルからビルドしようとしましたが、同じエラーが発生しました。同じエラーを実行した後でもflutter clean | dart pub get | dart run build_runner build --delete-conflicting-outputs
持続します。
現在の回避策
現在、手動でファイルを作成し、ステートメントを手動で.g.dart
追加しています。その後、実行すると、ソース生成が成功します。ただし、生成されたメソッドをコードにリンクした後に再度実行すると、ファイルが削除され、再び同じエラーが発生します。ソース生成が必要になるたびに、このプロセスを繰り返さなければなりません。part of
build_runner
build_runner
.g.dart