我刚从rc-1升级到最新的rc-3。该应用程序使用的是JavaScript、、ES6、和SystemJS。当我用浏览器同步运行这个应用程序时,它就能工作了。但是,如果我捆绑了这个应用程序(使用systemjs-builder),然后运行它,浏览器控制台中就会出现这个错误。
在使用类装饰器时需要元数据空间。
问题来自使用带有基本http调用的@angular/http的组件,如果我删除import {Http, HTTP_PROVIDERS} from '@angular/http' ;,它就能工作。
另外,TypeScript不会出现这种情况,但是JS ES5和ES6会发生这种情况。Webpack身上也不会发生这种事。
我查看了捆绑代码,似乎SystemJS在Reflect代码之前就已经通过了Reflect代码.只适用于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]];
}
}发布于 2016-06-27 13:28:52
reflect-metadata、es6-shim和zone.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>https://stackoverflow.com/questions/38054090
复制相似问题