2017-02-03 14 views
6

Я создал приложение в Angular 2 и столкнулся с проблемой. Я использовал угловой CLI для создания своего приложения, я создал свои компоненты и услуги с помощью Angular CLI, и я использую «ng serve», чтобы запустить приложение локально, и все работает нормально. Чтобы создать сборку для PROD, я использую команду «ng build --Prod --base-href ./ --aot», он создает папку DIST, и размещение этой папки в IIS открывает приложение в порядке. Когда я проверяю код на TFS, есть событие, которое автоматически создает папку DIST с помощью jenkins и толкает сборку на мой сервер. Теперь, если я просматриваю приложение для сервера, он выдает следующие ошибки: «Нет провайдера для t!» и Error: Ошибка DI. Я не знаю, что я здесь делаю неправильно.
Angular2 «Нет провайдера для t!» и Uncaught (в обещании): Ошибка: ошибка DI

Ниже приведены скриншоты ошибки

enter image description here

enter image description here


Любая помощь очень ценится.

+0

Попробуйте выполнить компиляцию с помощью --aot. –

+0

@BoyanKostadinov: с или без --aot? Если это без --aot, я уже пробовал с --aot и размещал приложение в IIS, и он работал –

+0

. Тогда это проблема с вашей сборкой на сервере Jenkins. –

ответ

9

У меня была такая же проблема. Я смог его решить:

  1. ng serve -aot. Я смог узнать, что такое отсутствующий класс, поскольку он запускает AOT без запуска minify/uglify.
  2. Как только я это сделал, мне удалось просмотреть контекст ошибки, чтобы выяснить, какой компонент имеет проблемы.
  3. Перейти к компоненту в вопросе и начать удаление ссылок в конструкторе (где разрешение зависимостей происходит.

В моем случае, у меня была проблема с использованием класса Logger в базовом модуле angular2-регистрирующего/После того, как я удалил ссылку из компиляции конструктора и редера, он работал как прелесть. Затем я проверил с ng serve -prod, чтобы подтвердить, что это также было исправлено.

Одна вещь, которую я обнаружил, заключалась в том, что я должен был явно убить Угловую CLI и перестроить По какой-то причине, когда я изменил одну строку и сохранил ее, она сказала, что она перекомпилирована и все еще сломана. Только когда я ее убил и снова запустил команду, я сделал выясните, что это было действительно исправлено.

+0

Это помогло мне https://github.com/salemdar/angular2-cookie/issues/37 – dev

0

У меня была та же проблема, и причина оказалась причудой в библиотеке angular2-logger. This answer решил проблему для меня

0

исправлено! в моем случае это было потому, что NotificationService для angular2-уведомлений

раствор просто удалить NotificationService из массива поставщиков внутри вас приложение модуль.

, но это должно быть подтверждено ранее угловым в режиме AOT.

Спасибо!