Module.DEFAULT_REFLECTOR not initialized

2019-07-27 11:27发布

问题:

I'm setting up an AngularDart/PolymerDart project, but I keep running against the following error:

Breaking on exception: Module.DEFAULT_REFLECTOR not initialized for dependency injection. http://goo.gl/XFXx9G

Now I've read the page behind the url given at the end of the error and did some Stackoverflowing, but the only sollution I came across was adding -angular as a transformer in the pubspect.yaml. And so I did. But still I keep getting the same error and my project won't start.

My pubspec.yaml:

name: application
description: application
dependencies:
  angular: '>=1.0.0 <2.0.0'
  angular_node_bind: any
  core_elements: '>=0.3.2 <0.5.0'
  paper_elements: '>=0.5.0 <0.6.0'
  polymer: '>=0.14.0 <0.16.0'
  web_components: '>=0.9.0 <0.10.0'
dependency_overrides:
  args: '>=0.10.0 <0.12.0'
  code_transformers: '>=0.1.4+2 <0.3.0'
  html5lib: '>=0.10.0 <0.13.0'
  observe: '>=0.11.0 <0.13.0'
transformers:
- angular
- polymer:
    entry_points:
    - client/web/index.html

index.html:

<!DOCTYPE html>
<html>
  <head>
    <meta charset="utf-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Application</title>

    <!-- include the web_components polyfills with support for Dart. -->
    <script src="../packages/web_components/platform.js"></script>

    <!-- imports -->
    <link rel="import" href="../packages/polymer/polymer.html">
    <link rel="import" href="components/component.html">

  </head>
  <body>

    <!--
      don't put ng-app on html or body. the polymer build inlines
      custom elements definitions, which can trigger bugs if the code
      inlined is inside of ng-app
     -->
    <div ng-app>      
      <section>
        <p>Angular</p>
        <p>
          <input type="text" ng-model="cool"> Angular binding: {{cool}}
        </p>
      </section>

      <section>
        <p>Polymer</p>
        <my-element message="[[ cool ]]"></my-element>
      </section>
    </div>

    <!-- initialize -->
    <script type="application/dart" src='dart/init.dart'></script>
    <script src="../packages/browser/dart.js"></script>

  </body>
</html>

init.dart:

import 'package:polymer/polymer.dart';
import 'package:angular/application_factory.dart';
import 'package:angular_node_bind/angular_node_bind.dart' show NodeBindModule;

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

}

回答1:

It appears that the "web" folder MUST be in the same folder as your pubspec.yaml. I placed the web folder inside a folder "client", which caused the problem. Putting the web folder in the project root folder again fixed the issue.