23

我只是想用我在 3 个月前存储的相同命令生成我的文件(我对后端和 devops 不是很好),现在它不再生成文件了。它告诉我使用我不记得的删除命令,但即使使用该命令,我的文件仍然不会生成。这就是我的日志的样子,在下面你可以找到一个简单类的代码。

我的一个猜测是这与我更改我的 github 帐户有关,因为这里提到了权限问题。

我在 Windows 10 中使用 vs 代码。

日志文件:

E:\1 Work\flutter_pilot> flutter pub run build_runner build
[INFO] Generating build script...
[INFO] Generating build script completed, took 336ms

[WARNING] Deleted previous snapshot due to missing asset graph.
[INFO] Creating build script snapshot......
[INFO] Creating build script snapshot... completed, took 12.5s

[INFO] Initializing inputs
[INFO] Building new asset graph...
[INFO] Building new asset graph completed, took 787ms

[INFO] Checking for unexpected pre-existing outputs....
[INFO] Found 13 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-outputs`. The outputs are: lib/models/advisory-service-item.g.dart
lib/models/advisory-service.g.dart
lib/models/auth.g.dart
lib/models/contract.g.dart
lib/models/contributor.g.dart
lib/models/exact-cost-values.g.dart
lib/models/exact-cost.g.dart
lib/models/expert.g.dart
lib/models/paginator-info.g.dart
lib/models/person.g.dart
lib/models/project.g.dart
lib/models/system-country.g.dart
lib/models/user.g.dart
pub failed (78)

类文件:

import 'package:json_annotation/json_annotation.dart';
part 'organisation.g.dart';

@JsonSerializable()
class Organisation {
  final String name;
  Organisation({this.name});

  factory Organisation.fromJson(Map<String, dynamic> json) => _$OrganisationFromJson(json);

  Map<String, dynamic> toJson() => _$OrganisationToJson(this);
}
4

13 回答 13

71

我有一个类似的问题,但我使用的是 Android Studio IDE,并且我已经完成了以下步骤:

文件 => 使缓存无效/重新启动

运行以下命令:

flutter clean

flutter pub get

flutter packages pub run build_runner build --delete-conflicting-outputs  
     

关于--delete-conflicting-outputs

假设 users 包中的冲突输出来自以前的构建,并跳过通常会提供的用户提示。

参考

于 2020-05-15T05:49:06.490 回答
9

如果您仔细阅读错误消息,您会看到它要求您尝试--delete-conflicting-outputs在命令末尾添加。所以你应该试试flutter packages pub run build_runner build --delete-conflicting-outputs

于 2020-01-09T17:52:42.257 回答
5

在我的情况下,添加part 'file_name.g.dart';到文件顶部有帮助。

文件名.dart:

import 'package:json_annotation/json_annotation.dart';

part 'file_name.g.dart';

@JsonSerializable()
class YourClass {

    factory YourClass.fromJson(Map<String, dynamic> json) => _$YourClassFromJson(json);

    Map<String, dynamic> toJson() => _$YourClassToJson(this);

    // ... your class code
}
于 2020-11-04T10:11:07.110 回答
5

我遇到过同样的问题。使用以下命令解决

flutter packages pub run build_runner build --delete-conflicting-outputs  
于 2021-08-14T16:12:31.713 回答
4

你只需运行下面的代码..

flutter pub run build_runner build --delete-conflicting-outputs
于 2021-04-14T15:19:51.637 回答
2

我认为这发生在我们大多数人身上的主要原因是,当您之前运行此命令时,您可能会将生成的g.dart文件添加到源代码管理中。这反过来会阻止build_runner重新生成以前生成的g.dart文件,即使您只需要新g.dart文件,它也会这样做。现在,我知道这可能很难理解,但请考虑一下:

  1. 假设你有一个search_entry.dart文件。
  2. 您运行了命令,并search_entry.g.dart成功生成了文件。
  3. 然后,您继续将生成的search_entry.g.dart文件添加到您的源代码控制存储库。
  4. 你制作另一个文件,假设是cached_data_entry.dart.
  5. cached_data_entry.dart当您第二次 运行该命令以 search_entry.g.dart生成 cached_data_entry.dart.
  6. 由于search_entry.g.dart受源代码控制保护,构建运行器将无法删除它,因此会引发此错误。
  7. 现在,您需要做的是修复当前情况,删除以前所有先前生成的g.dart文件(search_entry.g.dart在我们的示例中),然后将其添加到源代码管理中文件中的忽略文件中.gitignore。然后再次运行该命令,希望这次它会成功。
  8. 您将来应该做的是,在生成这些文件后立即从源代码管理中忽略这些文件。

现在,最后,我希望我已经把它说得尽可能清楚了。

于 2021-07-08T10:11:59.463 回答
1

我遇到过同样的问题。起初我生成了一个myFirstGeneratedFile.g.dart文件,然后我需要另一种对象类型来存储,然后当我尝试使用此命令生成文件时 =>

flutter packages pub run build_runner clean

我收到错误消息。

我通过删除我之前创建的文件来修复它 => myFirstGeneratedFile.g.dart 然后再次运行该命令。

干杯!

于 2020-06-21T10:08:35.430 回答
0

就我而言,我忘记导入 mobx_codegen

于 2021-07-11T03:59:07.107 回答
0

就我而言,我已经声明了一个名为Organisation.dart而不是 small letter的 dart 文件organisation.dart,折射它并再次运行构建运行器对我有用。

于 2020-04-21T07:04:34.593 回答
0

运行“flutter pub upgrade”为我解决了这个问题。

于 2020-01-10T09:31:32.390 回答
0

在我的情况下, build_runner 过程成功,但没有生成 .g 文件。在开始查看 .g 文件之前,我必须重新启动 IDE(vscode)。

于 2022-02-07T04:27:14.777 回答
0

删除.dart_tool文件夹并运行flutter pub get. 在此之后,运行 build runner 命令

于 2020-02-20T04:08:39.737 回答
0

将 built_value_generator 添加到pubspec.yamltodev_dependencies部分 https://pub.dev/packages/built_value_generator

您可以阅读官方文档 - https://dart.dev/tools/build_runner

于 2022-02-04T11:59:21.337 回答