【发布时间】:2016-10-29 11:24:27
【问题描述】:
我刚刚将 Angular 从 rc-1 更新到最新的 rc-3。
该应用程序使用 JavaScript ES6 和 SystemJS。当我使用 browsersync 运行应用程序时,它可以工作。但是如果我捆绑应用程序(使用 systemjs-builder)然后运行它,我会在浏览器控制台中出现此错误
使用类装饰器时需要未捕获的反射元数据填充程序。
问题来自使用@angular/http 和基本http 调用的组件,如果我删除import {Http, HTTP_PROVIDERS} from '@angular/http' ; 它可以工作。
另外,TypeScript 不会发生这种情况,但 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]];
}
}
【问题讨论】:
-
你使用任何转译器来使用装饰器吗?
标签: javascript angular ecmascript-6 systemjs