2017-02-23 83 views
0

有一段时间,我的印象是,Angular2 Dart codegen是发展的前进方向。不幸的是,似乎到最近我不能再使用codegen了。这是我的pubspec.yaml不起作用并产生错误。通过仅删除/ transform/codegen部分,错误消失了。酒吧构建抛出angular2飞镖codegen的错误

name: frontend 
version: 0.0.1 
description: Regatta frontend 
author: 
homepage: https://regatta.atlassian.net 
documentation: 

environment: 
    sdk: '>=1.19.0 <2.0.0' 

dependencies: 
    angular2: 3.0.0-alpha 
    angular2_components: 0.3.1-alpha 
    reflectable: 1.0.1 
    sass_transformer: 0.1.2+1 
    greencat: 0.0.2 
    browser: 0.10.0+2 
    http: 0.11.3+9 
    stream_transformers: 0.3.0+3 

dev_dependencies: 
    test: 0.12.19 
    dart_to_js_script_rewriter: 1.0.2 
    dart_style: 0.2.16 
    pageloader: 2.2.5 
    mockito: 1.0.1 
    angular_test: 1.0.0-alpha+5 

transformers: 
    - sass_transformer 
    - angular2/transform/codegen: 
     platform_directives: 
     - 'package:angular2/common.dart#COMMON_DIRECTIVES' 
     platform_pipes: 
     - 'package:angular2/common.dart#COMMON_PIPES' 
     entry_points: web/main.dart 
     resolved_identifiers: 
     BrowserClient: 'package:http/browser_client.dart' 
     Client: 'package:http/http.dart' 
    - angular2/transform/reflection_remover: 
     $include: 
     - test/**_test.dart 
     - web/main.dart 
    - reflectable: 
     entry_points: 
     - web/main.dart 
     formatted: true 
    - test/pub_serve: 
     $include: test/**_test.dart 
    - dart_to_js_script_rewriter 

错误消息

pub build 
Loading source assets... 
Loading angular2/transform/codegen, dart_to_js_script_rewriter, sass_transformer, reflectable, test/pub_serve and reflectable/src/transform_import transformers... 
Loading angular2 and angular2/transform/reflection_remover transformers... (3.9s) 
[Error from DirectiveMetadataLinker on frontend|lib/components/navigation_bar_component/navigation_bar_component.ng_summary.json with input frontend|lib/components/navigation_bar_component/navigation_bar_component.ng_meta.json]: 
Missing identifier "materialProviders" needed by "NavigationBarComponent" from metadata map 
[Error from DirectiveMetadataLinker on frontend|lib/components/event_list_component/event_list_component.ng_summary.json with input frontend|lib/components/event_list_component/event_list_component.ng_meta.json]: 
Missing identifier "materialProviders" needed by "EventListComponent" from metadata map 
[Error from DirectiveMetadataLinker on frontend|lib/components/event_detail_component/event_detail_component.ng_summary.json with input frontend|lib/components/event_detail_component/event_detail_component.ng_meta.json]: 
Missing identifier "materialProviders" needed by "EventDetailComponent" from metadata map 
[Error from TemplateCompiler on frontend|lib/app_component.ng_meta.json]: 
Could not find Directive/Pipe entry for name: NavigationBarComponent 
. Please be aware that Dart transformers have limited support for reusable, pre-defined lists of Directives/Pipes (aka "directive/pipe aliases"). See for details. 
Building frontend... (12.2s) 
+1

嗨法比安 我快速看了一下 - 它确实看起来确实有用 - 例如画廊应用程序(https://dart-lang.github.io/angular2_components_example/)是使用相同的配置构建的,的时间代码生成: https://github.com/dart-lang/angular2_components_example – matanlurey

回答

1

我推荐使用标准的变压器,因为它包括反射去除相位已经https://github.com/dart-lang/angular2/blob/master/lib/src/transform/transformer.dart#L37

如果必须使用备用变压器angular2 /变换/代码生成,那么你需要一个版本使用相同的变压器angular2_components的。

我尝试通过添加以下内容到pubspec.yaml:

dependency_override 
    angular2_components: 
    path: ../../angular2_components 

在我提供的路径,我有混帐回购协议的本地克隆,我改变了pubspec.yaml文件中使用:

transformers: 
    - angular2/transform/codegen: 
    ... 

这让包建。

+0

非常感谢,这似乎是这个问题。我不完全知道为什么我将变压器改为codegen。我想一些教程肯定会提出它,当时它也起作用。我现在再次使用原始变压器,并对此感到满意。至少有这个问题。另一个是在一个单独的bugreport ... – Fabian