太多的导入导致 `pub serve` 挂起

too many imports cause `pub serve` to hang

当我 运行 pub -v serve web 我的 AngularDart 应用程序时,pub 总是挂在这里:

% pub -v serve web
FINE: Pub 1.25.0-dev.16.4
FINE: Loading asset environment...
FINE: Initializing barback...
FINE: Serving packages on localhost:0.
MSG : Loading source assets...
FINE: Providing sources for ordreset|lib.
FINE: Loading source assets finished (0.053s).
FINE: Provided sources.
FINE: Loading transformers...
FINE: Transformer dependencies:
    | angular: -
    | test/pub_serve: -
    | dart_to_js_script_rewriter: -
FINE: Using cached transformer snapshot.
MSG : Loading angular, test/pub_serve and dart_to_js_script_rewriter transformers...
FINE: Loading transformers from [angular, test/pub_serve, dart_to_js_script_rewriter]
FINE: Spawning isolate from ./.pub/transformers/transformers.snapshot.
FINE: Loading angular, test/pub_serve and dart_to_js_script_rewriter transformers finished (0.151s).
FINE: Transformers from angular: {group of [[BuilderTransformer: Instance of 'TemplatePlaceholderBuilder'], [ReflectionRemover], [StylesheetCompiler, BuilderTransformer: Instance of 'LibraryBuilder']]}
FINE: Transformers from test/pub_serve: {PubServe}
FINE: Transformers from dart_to_js_script_rewriter: {DartToJsScriptRewriter}
FINE: Loading transformers finished (0.649s).
FINE: Initializing barback finished (0.763s).
FINE: Loading asset environment finished (1.062s).
FINE: Providing sources for ordreset|web.
FINE: Bound "web" to localhost:8080.
MSG : Serving ordreset web on http://localhost:8080
FINE: [Fine from StylesheetCompiler]:
    | [processStylesheet] took 50 ms on ordreset|lib/src/dashboard_component.css
FINE: [Fine from StylesheetCompiler on ordreset|lib/src/dashboard_component.css]:
    | Took 0.2s (0.0s awaiting secondary inputs).
FINE: [Fine from StylesheetCompiler]:
    | [processStylesheet] took 30 ms on ordreset|web/main.css
FINE: [Fine from StylesheetCompiler on ordreset|web/main.css]:
    | Took 0.2s (0.0s awaiting secondary inputs).
FINE: [Fine from BuilderTransformer: Instance of 'TemplatePlaceholderBuilder' on ordreset|primary]:
    | Took 0.4s (0.0s awaiting secondary inputs).
FINE: [Fine from BuilderTransformer: Instance of 'LibraryBuilder' on ordreset|primary]:
    | Not yet complete after 10.0s
FINE: [Fine from BuilderTransformer: Instance of 'LibraryBuilder' on ordreset|primary]:
    | Not yet complete after 20.0s

我注意到当删除所有 import 'package:xml/xml.dart' as xml; 语句时,pub serve 不再挂起。但是我过去确实观察到相同的行为,删除所有 import 'package:angular_components/angular_components.dart'; 也解决了这个问题。因此,我实际上怀疑 xmlangular_components 包有问题,但问题可能与 source_gen 的导入限制有关,类似于 this issue 来自过去。

我已经上传了我的 AngularDart 项目 here。您可以 运行 pub get 然后 pub -v serve web 自己看看 pub 是如何挂起的。

PS:出于隐私原因,我在将代码推送到 public GitHub 存储库之前清空了所有 AngularDart HTML 模板文件,但这不应该改变pub serve 应该仍然成功的事实。

https://github.com/thosakwe/pub_mediator (web version is currently down :-/)

揭示

$ mediator
✗ Found 1 dependency conflict:
Found 2 mismatching dependencies on package:build:
  * angular requires  ^0.10.0
  * angular->build_barback requires  ^0.11.0

您可以尝试添加

dependency_overrides:
  build: ^0.11.0

另见 https://github.com/dart-lang/pub/issues/912

正如@GünterZöchbauer 在他的回答评论中指出的那样,按照以下步骤解决问题:

  1. 删除项目文件夹中的 .pub
  2. 运行 pub get --no-precompile 而不是常规的 pub get 以防止似乎导致问题的预编译。
  3. 现在运行pub serve照常。