【问题标题】:Angular2 decorators are not definedAngular2 装饰器未定义
【发布时间】:2016-06-09 23:19:54
【问题描述】:

我的项目是使用 webpack 构建的,但是当我从 localhost 托管应用程序时出现错误。

未捕获的引用错误:__decorate 未定义。

最初我得到了 Injectable() 装饰器的错误。但是当我取消注释时,我得到了同样的错误,但扩展了。

我创建了一个重复错误的存储库。
https://github.com/shawnrmoss/decorators

我怀疑这与打字有关,因为当我不得不更改这些定义时问题就开始了。
typings_orig.json 具有原始类型定义

我不确定发生了什么。希望有人能对此有所启发并帮助我。

谢谢。

【问题讨论】:

  • 您能给我们提供更多关于您使用什么的详细信息吗? ES5、ES6、TypeScript?
  • 当然:angular 2 2.0.0.0-beta.0,typescript 1.7.5,es6
  • Uncaught ReferenceError: decorate is not defined(anonymous function) @ auth.service.ts:6(anonymous function) @ auth.service.ts:87__webpack_require @ bootstrap 435ddfde67fa15c11a9e: 50(匿名函数)@main.ts:1__webpack_require__@bootstrap 435ddfde67fa15c11a9e:50webpackJsonpCallback@bootstrap 435ddfde67fa15c11a9e:21(匿名函数)@main.bundle.js:1
  • 一切正常。然后我有一个硬盘驱动器故障。必须从我们的存储库下载项目并重新安装 node_modules。从那以后我得到这个错误
  • 谢谢!您是否包含了angular2-polyfills.js 文件?

标签: typescript angular decorator webpack injectable


【解决方案1】:

我认为您没有将 Reflect-metadata 库导入到您的项目中。这个库由 Angular 提供,感谢 angular2-polyfills.js 文件。该库包含 ZoneJS 和 Reflect-metadata。

这个库被装饰者使用,特别是@Injectable 。他们在内部使用Reflect.decorate 函数。

从您的评论看来,您似乎只导入了 es6-promise 和 zone-microtask...

我从 angularclass 入门套件开始。在供应商 ts 文件中,它有这个 //(这些模块在 'angular2/bundles/angular2-polyfills' 中,所以不要在这里使用它) import 'es6-promise';导入'zone.js/lib/browser/zone-microtask';

这篇文章可以帮到你,找Reflect.decorate

【讨论】:

  • 非常感谢您的帮助。我阅读了您提供的文章,但我仍然不知所措。我创建了一个精简的 repo,它复制了我得到 github.com/shawnrmoss/decorators.git 的错误
猜你喜欢
  • 1970-01-01
  • 2020-06-30
  • 2013-02-06
  • 2021-09-30
  • 2013-10-25
  • 1970-01-01
  • 2022-07-21
  • 2016-03-23
  • 2016-07-18
相关资源
最近更新 更多