IT이야기

Angular2 + Jspm.io : 클래스 데코레이터를 사용할 때 메타데이터 반사 심이 필요합니다.

cyworld 2021. 9. 25. 11:11
반응형

Angular2 + Jspm.io : 클래스 데코레이터를 사용할 때 메타데이터 반사 심이 필요합니다.


Angular2 및 SystemJS(버전: Angular@2.0.0-alpha.27 with JSPM@0.16.0-beta.2 및 SystemJS@0.18.0)에서 아래 버전의 JSPM을 실행하는 데 다음 문제가 있습니다. 컴파일된(오류 없이) 브라우저에서 다음 오류가 발생합니다.

/jspm_packages/npm/angular2@2.0.0-alpha.27/src/util/decorators.js:70 Uncaught reflect-metadata shim is required when using class decorators

이제 Reflect.js: \jspm_packages\npm\reflect-metadata@0.1.0\Reflect.js 파일을 수동으로 포함하면 문제가 해결되지만 목록이 다른 각도 파일 내에서 정의되지 않았다는 다음 문제가 나타납니다.

system.js와 typescript/jspm.io의 구성 파일(src 코드)은 아래 bitbucket src를 참조하세요.

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

내가 궁금한 것은 현재 jspm을 system.js와 함께 사용하여 angular가 정상적으로 작동하는 데 필요한 모든 angular 패키지를 검색하는 것이 가능한지 여부입니다. system.js에 대한 구성을 보면 각도가 이에 의존한다는 것을 명확하게 명시하고 있습니다.

"npm:angular2@2.0.0-alpha.27": {
  "fs": "github:jspm/nodelibs-fs@0.1.2",
  "path": "github:jspm/nodelibs-path@0.1.0",
  "process": "github:jspm/nodelibs-process@0.1.1",
  "reflect-metadata": "npm:reflect-metadata@0.1.0",
  "rx": "npm:rx@2.5.1",
  "url": "github:jspm/nodelibs-url@0.1.0",
  "zone.js": "npm:zone.js@0.5.1"
},

그러나 그들은 검색되지 않습니다 (네트워크 탭을보고)


예, 당신이 찾고 있는 것이 가능하고 잘 작동합니다. 종속성이 있는 것처럼 보입니다. 최상위 유형 스크립트 또는 JavaScript 파일의 시작 부분에 있어야 하는 다음 항목만 누락되었다고 생각합니다. 특히, 이러한 항목은 Angular를 로드하는 첫 번째 줄 앞에 있어야 합니다.

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

(다른 답변은 상세하지만 오프사이트 설명을 가리킵니다.)


Robwormald 는 jspm 및 typescript https://gist.github.com/robwormald/429e01c6d802767441ec에서 각도 알파 27을 사용하려고 시도하는 이 시점에서 사람들이 가질 수 있는 문제를 다루는 아주 자세한 설명을 작성했습니다.


Angular 4.4+ 환경에서 이 문제가 발생한다면 ng serve.

ReferenceURL : https://stackoverflow.com/questions/30911861/angular2-jspm-io-reflect-metadata-shim-is-required-when-using-class-decorato

반응형