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-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>