【问题标题】:Uncaught reflect-metadata shim is required when using class decorators使用类装饰器时需要未捕获的反射元数据填充程序
【发布时间】:2016-12-27 07:19:11
【问题描述】:

在尝试使用 typescript 和 npm 运行我的 Angular2 应用程序时,我收到标题错误。正如在类似主题中所说,我尝试了“import 'reflect-metadata';” 但它没有用。

这是我的 package.json 文件中的依赖项:

"reflect-metadata": "0.1.3",

提前感谢您的宝贵时间

P.S:这是在我将应用程序从 rc4 升级到 rc5 之后发生的

编辑 1

关于错误的更多细节:

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

【问题讨论】:

  • 你能创建一个 plunker 来重现它吗?
  • @candidJ 这是 git 链接:github.com/Miss-Git/R-Panel
  • 你解决了吗?我也遇到了同样的问题,我也从 rc4 升级到了 rc5(在这里使用 webpack)
  • @Manatax 还没有。但我发现问题出在“Reflect.getMetadata”上。如果有任何进展我会更新这篇文章
  • 我从 webpack 切换到 systemjs 直到这个问题得到解决:P

标签: angular typescript reflect-metadata


【解决方案1】:

控制台中应该有错误可以解释为什么没有加载reflect-metadata

0.1.3 的现有问题是它有conditional dependencies 可能被模块化系统(SystemJS、Webpack 等)错误地包含。如果脚本以正常方式加载,则不会发生这种情况,

<script src="https://npmcdn.com/reflect-metadata@0.1.3"></script>

以后的包版本应该使用reflect-metadata与模块化系统,0.1.8目前可用。

【讨论】:

  • 我添加了错误的详细信息。请检查它并用您的好意的建议帮助我解决它
  • 它与您的构建有关,而不是其他任何事情。你没有require('vendor') 模块。它是应用 polyfill 和所有东西的那个。
【解决方案2】:

当我升级用于休息端点的 swagger 生成的客户端代码(swagger 编辑器 2.2.3)时,angular 4.1.3cli 构建时遇到了同样的问题。

我添加了reflect-metadata,它对我有用。在angular 4 之后遇到问题并拥有cli 的任何人都可能对此有所帮助。

错误信息与以下略有不同

_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

【讨论】:

  • 你在哪里添加的?
  • 将其添加到您的 package.json 文件中,该文件将在您的项目依赖项中安装反射元数据。
猜你喜欢
  • 2017-09-06
  • 2016-09-27
  • 2015-09-03
  • 1970-01-01
  • 1970-01-01
  • 2016-10-29
  • 1970-01-01
  • 1970-01-01
  • 2018-07-10
相关资源
最近更新 更多