阅读 2803

Flutter杂症( flutter packages pub run build_runner build )

报错日志

[INFO] Checking for unexpected pre-existing outputs....
[INFO] Found 14 declared outputs which already exist on disk. This is likely because the`.dart_tool/build` folder was deleted, or you are submitting generated files to your source repository.
[SEVERE] Conflicting outputs were detected and the build is unable to prompt for permission to remove them. These outputs must be removed manually or the build can be run with `--delete-conflicting-o
utputs`. The outputs are: lib/data/http/rsp/BaseRsp.g.dart

[INFO] Generating build script...
[INFO] Generating build script completed, took 246ms
[SEVERE] Nothing can be built, yet a build was requested.
pub finished with exit code 78
复制代码

引发的过程

这个问题出现的挺巧的,项目给的工时不长,周六回家之后用自己电脑从git仓库上Clone了一份代码,运行没有问题。但是在用flutter packages pub run build_runner build生成xxxx.g.dart的时候问题出来了。日志如上。

引发的原因

原因其实日志也说明了。我在提交代码的时候把flutter packages pub run build_runner build生成的xxxx.g.dart也提了上去。运行flutter packages pub run build_runner build不光生成了xxxx.g.dart。同时还成了一个dart_tool/build目录,入过程所说的只运行app是没有问题的,之前xxxx.g.dart还是可用的。但是再生成新的xxxx.g.dart因为缺少之前生成dart_tool/build目下的文件就会报错。

because the`.dart_tool/build` folder was deleted, or you are submitting generated files to your source repository
复制代码

解决

命令行运行:

//清除之前生成的文件,如果直接运行下面的不行。可以先尝试运行这个
 flutter packages pub run build_runner clean
//可以直接运行这个
 flutter packages pub run build_runner build --delete-conflicting-outputs
复制代码

当然解决问题的根本方法还是提代码的时候不要将生成的文件也提交到远程仓库