angular - Erro não capturado: shim reflect-metadata é necessário ao usar decoradores de classe
Enquanto tentava executar meu aplicativo Angular2 com TypeScript e npm, estou recebendo o erro mencionado no título. Como dito em tópicos semelhantes, tentei o "import 'reflect-metadata';" mas não funcionou.
Esta é a dependência no meu arquivo package.json:
"reflect-metadata": "0.1.3",
Agradeço antecipadamente pelo seu tempo
P.S.: Isso aconteceu depois que atualizei meu aplicativo de rc4 para rc5
Editar 1
Mais detalhes sobre o erro:
checkReflect @ vendor.js:40700
(anonymous function) @ vendor.js:40702
(anonymous function) @ vendor.js:40791
initModule @ vendor.js:43
require @ vendor.js:60
expanded @ vendor.js:34
(anonymous function) @ vendor.js:148
(anonymous function) @ vendor.js:30176
(anonymous function) @ vendor.js:30215
initModule @ vendor.js:43
require @ vendor.js:60
expanded @ vendor.js:34
(anonymous function) @ vendor.js:148
(anonymous function) @ vendor.js:30634
(anonymous function) @ vendor.js:30652
initModule @ vendor.js:43
require @ vendor.js:60
expanded @ vendor.js:34
(anonymous function) @ vendor.js:148
(anonymous function) @ vendor.js:37326
(anonymous function) @ vendor.js:37842
initModule @ vendor.js:43
require @ vendor.js:60
expanded @ vendor.js:34
(anonymous function) @ vendor.js:148
(anonymous function) @ vendor.js:36288
(anonymous function) @ vendor.js:37305
initModule @ vendor.js:43
require @ vendor.js:60
expanded @ vendor.js:34
(anonymous function) @ vendor.js:148
(anonymous function) @ vendor.js:26058
(anonymous function) @ vendor.js:26118
initModule @ vendor.js:43
require @ vendor.js:60
expanded @ vendor.js:34
(anonymous function) @ vendor.js:148
(anonymous function) @ vendor.js:9935
(anonymous function) @ vendor.js:10294
initModule @ vendor.js:43
require @ vendor.js:60
expanded @ vendor.js:34
(anonymous function) @ vendor.js:148
(anonymous function) @ vendor.js:12761
(anonymous function) @ vendor.js:12871
initModule @ vendor.js:43
require @ vendor.js:60
expanded @ vendor.js:34
(anonymous function) @ vendor.js:148
(anonymous function) @ vendor.js:12255
(anonymous function) @ vendor.js:12657
initModule @ vendor.js:43
require @ vendor.js:60
expanded @ vendor.js:34
(anonymous function) @ vendor.js:148
(anonymous function) @ vendor.js:12907
(anonymous function) @ vendor.js:12935
initModule @ vendor.js:43
require @ vendor.js:60
expanded @ vendor.js:34
(anonymous function) @ vendor.js:148
(anonymous function) @ vendor.js:12885
(anonymous function) @ vendor.js:12892
initModule @ vendor.js:43
require @ vendor.js:60
expanded @ vendor.js:34
(anonymous function) @ vendor.js:148
(anonymous function) @ vendor.js:6709
(anonymous function) @ vendor.js:6746
initModule @ vendor.js:43
require @ vendor.js:60
expanded @ vendor.js:34
(anonymous function) @ vendor.js:148
(anonymous function) @ vendor.js:49327
(anonymous function) @ vendor.js:49528
initModule @ vendor.js:43
require @ vendor.js:60
expanded @ vendor.js:34
(anonymous function) @ main.js:404
initModule @ vendor.js:43
require @ vendor.js:60
(anonymous function) @ (index):38
Resposta #1
Eu tive o mesmo problema com angular 4.1.3 com o build do cli quando atualizei meu código de cliente gerado pelo swagger para endpoints REST (swagger editor 2.2.3).
Eu adicionei reflect-metadata e funcionou para mim. Qualquer um enfrentando o problema após angular 4 e que tenha cli pode se ajudar com isso.
A mensagem de erro era um pouco diferente como abaixo
_fails.js:1 Uncaught SyntaxError: Unexpected identifier
at Object../node_modules/core-js/modules/_descriptors.js (_descriptors.js:2)
at __webpack_require__ (bootstrap aaad282eb132f1a48d07:54)
at Object../node_modules/core-js/modules/es6.symbol.js (es6.symbol.js:5)
at __webpack_require__ (bootstrap aaad282eb132f1a48d07:54)
at Object../node_modules/core-js/es6/symbol.js (polyfills.bundle.js:1560)
at __webpack_require__ (bootstrap aaad282eb132f1a48d07:54)
at Object../src/polyfills.ts (ckset.ts:17)
at __webpack_require__ (bootstrap aaad282eb132f1a48d07:54)
at Object.2 (polyfills.bundle.js:13849)
at __webpack_require__ (bootstrap aaad282eb132f1a48d07:54)
core.es5.js:354 Uncaught reflect-metadata shim is required when using class decorators
Resposta #2
Deveria haver erros no console que expliquem por que reflect-metadata não foi carregado.
O problema existente com a versão 0.1.3 é que ela possui dependências condicionais que podem ser incluídas erroneamente por sistemas modulares (SystemJS, Webpack, etc). Isso não acontece se o script for carregado da maneira normal,
<script src="https://npmcdn.com/[email "></script>
Uma versão posterior do pacote deve ser usada para utilizar reflect-metadata com sistemas modulares, a 0.1.8 está disponível neste momento.
