web-dev-qa-db-ja.com

Angular2 + Jspm.io:クラスデコレータを使用する場合、reflect-metadata shimが必要です

Angular2およびSystemJSで以下のバージョンのJSPMを実行すると、次の問題が発生します(バージョン:[email protected]および[email protected][email protected])コンパイルされた(エラーなし)ブラウザーで次のエラーが表示されます。

/jspm_packages/npm/[email protected]/src/util/decorators.js:70 Uncaught reflect-metadata shim is required when using class decorators

Reflect.jsファイルを手動でインクルードすると、\ jspm_packages\npm\[email protected]\Reflect.jsという問題はなくなりますが、リストが別のangularファイル内で定義されていないという次の問題が発生します。

System.jsとTypeScript/jspm.ioの両方からの設定ファイル(srcコード)については、以下のbitbucket srcを参照してください

https://bitbucket.org/schippie/angular-2-jspm-hello-world/src/8af83f2066e5e3e9eede7db495545234f3b0c04a

私が疑問に思っているのは、system.jsと一緒にjspmを使用して、angularが正常に機能するために必要なすべてのangularパッケージを取得することさえ可能かどうかです。 system.jsの構成を見ると、angularがそれに依存していることが明確に示されています。

"npm:[email protected]": {
  "fs": "github:jspm/[email protected]",
  "path": "github:jspm/[email protected]",
  "process": "github:jspm/[email protected]",
  "reflect-metadata": "npm:[email protected]",
  "rx": "npm:[email protected]",
  "url": "github:jspm/[email protected]",
  "zone.js": "npm:[email protected]"
},

しかし、それらは取得されません(ネットワークタブを見る)

53
N.Schipper

Robwormald は、angular alpha 27をjspmとTypeScriptで動作させようとしているときに現時点で人々が抱えている可能性のある問題をカバーする詳細な説明を書いています https:/ /Gist.github.com/robwormald/429e01c6d802767441ec

13
N.Schipper

はい、あなたが探しているものは可能であり、うまく機能します。依存関係が正しいように見えます。トップレベルのTypeScriptまたはJavaScriptファイルの先頭にある必要がある次のものだけが欠けていると思います。具体的には、これらは、Angularをロードする最初の行の前にある必要があります。

import 'zone.js';
import 'reflect-metadata';

(他の回答は、詳細ですが、オフサイトの説明を指します。)

66
Kyle Cordes

この問題がAngular 4.4+環境で発生した場合、ng serveを再起動すると役立ちます。

4
creep3007