Angularを_rc-1
_から最新の_rc-3
_に更新しました。アプリはJavaScript ES6とSystemJSを使用しています。browsersyncでアプリを実行すると、それは動作しますが、アプリを(systemjs-builderに)バンドルして実行すると、ブラウザコンソールにこのエラーが表示されます
クラスデコレータを使用する場合は、未捕捉のリフレクトメタデータシムが必要です。
問題は、基本的なhttp呼び出しで_@angular/http
_を使用しているコンポーネントに起因します。_import {Http, HTTP_PROVIDERS} from '@angular/http' ;
_を削除すると動作します。
さらに、TypeScriptでは発生しませんが、JS ES5およびES6では発生します。また、Webpackでは発生しません。
バンドルされたコードを調べましたが、SystemJSはAngular
コードの前に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]];
}
}
_
reflect-metadata
、es6-shim
およびzone.js
はグローバルライブラリであると想定されています。したがって、index.jsの場合のように、モジュールの1つにインポートしないでください。
Angular 2クイックスタート で説明されているように、index.jsのimportステートメントを削除して、index.htmlで参照してください。
<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>