【问题标题】:Why is Module.DEFAULT_REFLECTOR not initialized?为什么 Module.DEFAULT_REFLECTOR 没有初始化?
【发布时间】:2015-02-20 04:47:24
【问题描述】:

这是一个 Angular 1.0 应用程序。 Chrome 控制台中的错误是:

Uncaught Module.DEFAULT_REFLECTOR not initialized for dependency injection.http://goo.gl/XFXx9G

我已阅读其他帖子,并且我的 pubspec.yaml 中确实有 Angular 转换器:

dependencies:
  barback: any
  browser: any
  angular: 1.0.0
  msgpack:
    git:
      url: git://github.com/danellis/dart-msgpack.git
      ref: master
dev_dependencies:
  template_cache_transformer: any
threadsafe: yes
transformers:
  - $dart2js:
      environment:
        MIRRORS: 'false'
  - angular:
      html_files:
        - lib/templates/app.html
        - lib/templates/input.html
        - lib/templates/roster.html
        - lib/templates/space.html
        - lib/templates/space_list.html
        - lib/templates/alerts.html
        - lib/templates/rostermenu.html
  - template_cache_transformer:
      entry_point: webatara|templates/app.html

我的主要功能是这样的:

void main() {
    applicationFactory().addModule(new WebataraModule()).run();
}

pub build 之后,修改后的 main.dart 中有这个:

void main() {
  setStaticReflectorAsDefault();
    staticApplicationFactory(generated_static_metadata.typeAnnotations, generated_static_expressions.getters, generated_static_expressions.setters, generated_static_expressions.symbols, generated_static_type_to_uri_mapper.typeToUriMapper).addModule(new WebataraModule()).run();
}

setStaticReflectorAsDefault 这样做:

setStaticReflectorAsDefault() => Module.DEFAULT_REFLECTOR = new GeneratedTypeFactories(typeFactories, parameterKeys);

看来 Module.DEFAULT_REFLECTOR 确实被设置了。那么为什么会出错呢?

【问题讨论】:

  • threadsafe 设置有什么作用?从未听说过pubspec.yaml 有这样的设置。我知道它在 app.yaml 中的作用。
  • 好问题。我相信 DartEditor 在项目开始时就把它放在那里了。
  • 好的,感谢您的反馈。我想知道如果它无效,为什么没有工具抱怨它。我认为这不是因为 Dart 没有线程。如果它实际上是有效的,它应该被记录在某个地方。我会睁大眼睛...

标签: dart angular-dart dart-pub dart2js


【解决方案1】:

转换器按照转换器部分中列出的顺序应用。 $dart2js 应该总是最后一个,template_cache_transformer 应该在 angular 之前。

【讨论】:

  • 哦。那可能是个问题。我的入口页面在一个完全不同的项目中。
  • 入口页面怎么可能是完全不同的项目。我认为在这种情况下,您应该将转换器添加到包含入口页面的项目中并构建此项目。
  • 它在一个非 Dart 项目中。我看看能不能转过来。
  • 我没有正确阅读您的pubspec.yaml。我错过了entry_point 是一个不同的变压器。您是否尝试过更改变压器的顺序?通常$dart2js 应该是最后一个,也许template_cache_transformer 应该在angular 之前(不确定,我有一段时间没有使用Angular)。当$dart2js 不是最后一个转换器时,最近进行了一项更改以减少问题,但我不确切知道更改是什么(可能只是正确的错误消息而不是失败)。
猜你喜欢
  • 1970-01-01
  • 2012-07-28
  • 1970-01-01
  • 2022-09-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-06-13
相关资源
最近更新 更多