当将ES6与Angular2 RC3一起使用时,需要取消反射 - 米达塔垫片



i刚刚将Angular从rc-1更新为最新的rc-3。该应用程序使用JavaScript ES6 和SystemJS。当我使用browsersync运行应用程序时,它可以正常工作。但是,如果我捆绑了应用程序(使用SystemJS-Builder)然后运行它,则在浏览器控制台中有此错误

使用课堂装饰器时需要未接收的反射 - 米达塔垫片。

问题来自使用基本HTTP调用的@angular/http的组件,如果我删除import {Http, HTTP_PROVIDERS} from '@angular/http' ;,则可以使用。

加上,它不会与打字稿发生,但与JS ES5和ES6有关。另外,WebPack不会发生。

我查看了捆绑的代码,看来Systemjs在Reflect代码之前通过Angular代码...仅使用ES6

index.js

import 'reflect-metadata';
import 'es6-shim';
import 'zone.js';
import {bootstrap} from '@angular/platform-browser-dynamic';
import {App} from './app.js';
bootstrap(App);

app.js

import {Component} from '@angular/core';
import {Http, HTTP_PROVIDERS} from '@angular/http';
@Component({
  selector: 'App',
  template: '',
  providers: [HTTP_PROVIDERS]
})
export class App {
  constructor(http) {}
  static get parameters() {
    return [[Http]];  
  }
}

reflect-metadataes6-shimzone.js应该是全局库。因此,您不应该像在index.js中那样将它们导入其中一个模块。

尝试删除index.js中的导入语句,并在您的index.html中引用它们,就像在Angular 2 QuickStart中解释:

<script src="node_modules/zone.js/dist/zone.js"></script>
<script src="node_modules/reflect-metadata/Reflect.js"></script>
<script src="node_modules/systemjs/dist/system.src.js"></script>

最新更新