Angular2 装饰器未定义

Angular2 decorators are not defined

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

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

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

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

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

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

谢谢。

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

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

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

I started with the angularclass starter kit. In the vendor ts file it has this // (these modules are what are in 'angular2/bundles/angular2-polyfills' so don't use that here) import 'es6-promise'; import 'zone.js/lib/browser/zone-microtask';

这篇文章可以帮助你寻找 Reflect.decorate: