【问题标题】:Compiled AngularDart fails with error in dynamic_injector编译的 AngularDart 因 dynamic_injector 错误而失败
【发布时间】:2014-02-08 07:57:56
【问题描述】:

我一直在尝试让 AngularDart 工作,但我总是遇到未定义对象的异常。

@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 时没有错误,但编译后的文件很大。

【问题讨论】:

  • 您使用的是哪个版本的 AngularDart?以及哪个版本的 Dart SDK?
  • 所有最新的。 AngularDart >=0.9.4
  • 至少我们在 0.9.5 中让 MirrorsUsed 的情况变得更加简单

标签: dart angular-dart dart2js dart-mirrors


【解决方案1】:

添加这些对我有帮助

    '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

【讨论】:

  • 也添加了这些,但没有帮助。我有同样的问题。我自己的图书馆没有使用 Mirrors。
  • 我的也不是,但我在某处读到了这个提示。如果真的有必要,我还没有尝试过。我想问题是Angular必须反思你的类来进行依赖注入并利用注释。而且 Angular 不能用 @MirrorsUsesd 覆盖你的类,不是吗?
  • 您是否尝试过使用pub build --mode=debug 进行构建,也许它会提供更好的错误消息(例如 newInstanceOf$4 可能是什么)
  • 非常感谢!现在可以了。 dynamic_parser 和 lexer 对我有帮助。
【解决方案2】:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-07-22
    • 1970-01-01
    • 1970-01-01
    • 2020-08-21
    • 2018-03-26
    • 1970-01-01
    • 1970-01-01
    • 2021-03-06
    相关资源
    最近更新 更多