2014-01-19 81 views
1

我一直在尝试使AngularDart工作,但我总是得到未定义对象的异常。编译AngularDart失败,错误dynamic_injector

@MirrorsUsed(
targets: const [ 
    'angular.core', 
    'angular.core.dom', 
    'angular.core.parser', 
    'angular.routing', 
    'angular.core.zone', 
    'di.di', 
    'di.dynamic_injector', 
    NodeTreeSanitizer, 
    DynamicParser, 
    DynamicParserBackend, 
    Injector 
], 
metaTargets: const [ 
    NgInjectableService, 
    NgComponent, 
    NgDirective, 
    NgController, 
    NgFilter, 
    NgAttr, 
    NgOneWay, 
    NgOneWayOneTime, 
    NgTwoWay, 
    NgCallback, 
    NgZone 
], 
override: '*' 
) 
import 'dart:mirrors'; 

并编译JavaScript的示值误差:

Uncaught TypeError: Cannot call method 'get$parameters' of undefined dynamic_injector.dart:42 
DynamicInjector.newInstanceOf$4 dynamic_injector.dart:42 

当我删除MirrorsUsed2没有错误,但编译的文件很大。

+0

您正在使用哪个版本的AngularDart?哪个版本的Dart SDK? –

+0

全部最新。 AngularDart> = 0.9.4 – krotov

+0

至少我们正在0.9.5中使用MirrorsUsed情况更简单 –

回答

2

添加这些帮助对我来说

'angular.filter', 
    'angular.perf', 
    'perf_api', 

代替angular.core.parser

'angular.core.parser.dynamic_parser' 
    'angular.core.parser.lexer' 

我还添加了我自己的图书馆。

另请参见https://code.google.com/p/dart/issues/detail?id=14686

+0

增加了那些,但它没有帮助。我有同样的问题。我自己的库不使用镜像。 – krotov

+0

我也没有,但我读了这个技巧的地方。如果真的有必要,我还没有尝试过。我想问题是Angular必须反思你的类来进行依赖注入并使用注释。而Angular不能用@MirrorsUsesd来覆盖你的类,可以吗? –

+0

您是否尝试过使用'pub build --mode = debug'进行构建?也许它会提供更好的错误消息(例如,newInstanceOf $ 4的值是多少) –

0

最近,我发现Dart-AngularJS在编译不运行时,即使是最简单的例子。我重新安装了我的dart sdk到最新的稳定版本,错误消失了。你能否看到这是否有效?请参阅github项目上的related issue

+0

现在我试过了,它对我不起作用。 – krotov