Angular2 + Jspm.io: рефлектор-метаданные требуется при использовании декораторов класса
У меня возникает следующая проблема с запуском следующих версий JSPM с Angular2 и SystemJS (Версии: Angular @2.0.0-alpha.27 с JSPM @0.16.0-beta.2 и SystemJS @0.18. 0) Что после компиляции typescript (без ошибок) я получаю следующую ошибку в браузере:
/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, проблема исчезает, но возникает следующая проблема: список undefined в пределах другого angular файл.
См. битбакет src ниже для конфигурационных файлов (код src) как из системных, так и для typescript/jspm.io
https://bitbucket.org/schippie/angular-2-jspm-hello-world/src/8af83f2066e5e3e9eede7db495545234f3b0c04a
Мне интересно, если в настоящее время возможно использовать jspm вместе с system.js, чтобы восстановить все пакеты angular, которые необходимы для angular, для нормальной работы.
Увидев, что в config для 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]"
},
Но они не извлекаются (смотря на вкладку сети)
Ответы
Ответ 1
Robwormald написал красиво подробное объяснение, которое охватывает проблемы, которые люди могут иметь в этот момент и время, пытаясь получить angular alpha 27 для работы с jspm и typescript https://gist.github.com/robwormald/429e01c6d802767441ec
Ответ 2
Да, то, что вы ищете, возможно и прекрасно работает. Кажется, что у вас есть права зависимостей. Я думаю, что вам не хватает только следующего, что должно быть в начале вашего верхнего уровня typescript или файла JavaScript. В частности, они должны быть до первой строки, что загружает Angular.
import 'zone.js';
import 'reflect-metadata';
(Другой ответ указывает на подробное, но за пределами сайта объяснение.)
Ответ 3
Если эта проблема возникает в среде Angular 4.4+, она может помочь, если вы перезапустите ng serve
.