Angular2 декораторы не определены

Мой проект создается с помощью веб-пакета, но когда я размещаю приложение на локальном хосте, я получаю сообщение об ошибке.

Uncaught ReferenceError: __decorate не определен.

Сначала я получаю сообщение об ошибке с декоратором Injectable(). Но когда я раскомментирую, я получаю ту же ошибку, но с extends.

Я создал репо, который дублирует ошибки.
https://github.com/shawnrmoss/decorators

Я подозреваю, что это как-то связано с типизацией, поскольку проблема возникла, когда мне пришлось изменить эти определения.
typings_orig.json имеет оригинальные определения типов

Я не уверен, что происходит. Надеюсь, кто-нибудь сможет пролить свет на это и помочь мне.

Благодарю.

1 ответ

Решение

Я думаю, что вы не импортируете в свой проект библиотеку Reflect-metadata. Эта библиотека предоставлена ​​Angular благодаря angular2-polyfills.js файл. Эта библиотека содержит как ZoneJS, так и Reflect-метаданные.

Эта библиотека используется декораторами, особенно @Injectable один. Они внутренне используют Reflect.decorate функция.

Из вашего комментария кажется, что вы импортируете только es6-обещание и Zone-MicroTask...

Я начал с начального набора angularclass. В файле vendor ts это есть // (эти модули находятся в 'angular2 / bundles / angular2-polyfills', поэтому не используйте это здесь) import 'es6-обещание'; импорт 'zone.js / lib / browser / zone-microtask';

Эта статья может помочь вам и искать Reflect.decorate:

Другие вопросы по тегам