概要
どうも、@daiki1003です!freezedやjson_serializableを使っていると必須になってくる
build_runnerパッケージ。
build_runner | Dart package
A build system for Dart code generation and modular compilation.
何が起きているのか?
実際に、必要になって動かしてみると
Bad state: Unexpected diagnostics: /path/to/flutter/repo/bin/cache/dart-sdk/lib/core/uri.dart:3259:39 - Expected an identifier. [SEVERE] freezed:freezed on lib/routes.dart:
に、似たエラーが10個ほど出た挙句
[INFO] 30.6s elapsed, 1/17 actions completed. [WARNING] No actions completed for 15.1s, waiting on:
が出て終わらない始末。
前は、うまく行っていたのでFlutterのバージョン1.20に関わるエラーの様です。
やったことを備忘録的に残しながら解決までの道のりを記述したいと思います。
とりあえず解決策が知りたい人は上の目次から飛んでくださいね!
build.yamlの追加
最初は、ただビルド時間が長すぎるだけだと思い前にmonoさんが時短に成功したと言う
ツイートを元にbuild.yamlを追加しました。
2万行のコードベースで、freezedのクラスのプロパティ弄る度に自動生成が20秒くらいかかるようになってしまって悩んでたけど、こんな感じのbuild.yamlをプロジェクトルートに置いたら3秒で終わるようになった🎉https://t.co/RtYpyJxMO2 pic.twitter.com/rvjtyvOPkS
— mono (@_mono) July 18, 2020
ですが、これは効果なし。
早い遅いの問題ではないですね。
analyzerパッケージの導入
// pubspec.yaml ... analyzer: ^0.39.14 ...
こちらも効果なし。
–delete-conflicting-outputsフラグの追加
$ flutter pub run build_runner build
実行時の最後に –delete-conflicting-outputsフラグを追加して実行してみました。
(本文だと潰れてしまってますが、最初はハイフン2個です。)
が、これも効果なし。
一度まっさらにする
$ rm pubspec.lock $ flutter clean $ flutter pub run build_runner build --delete-conflicting-outputs
と実行してみるも効果なし。
analyzerのバージョン指定方法を変更 (解決!)
調べてみると同じ様な原因で失敗している人も結構いて、
その解決策の一つとして
analyzer: ^0.39.14
を指定すると言うものがありました。
僕はこれだと上述の様にうまくいかなかったのですが、
analyzer: 0.39.14
とするとうまく行きました!
誰かのお役に立てば。Twitterフォローお願いします
「次回以降も記事を読んでみたい!」「この辺分からなかったから質問したい!」
そんな時は、是非Twitter (@daiki1003)やInstagram (@ashdik_flutter)のフォローお願いします♪
Twitterコミュニティ参加お願いします
Twitterコミュニティ「Flutter lovers」を開設しました!参加お待ちしております😁
☕️ Buy me a coffee
また、記事がとても役に立ったと思う人はコーヒーを奢っていただけると非常に嬉しいです!
コメント