Angular Ошибка 4-х модульной проверки `TypeError: ctor не является конструктором`

Я пытаюсь проверить свой распознаватель маршрута, и во время тестирования я получил TypeError: ctor is not a constructor, и не знаю, почему это происходит во время typescript времени компиляции без ошибок.

TypeError: ctor is not a constructor
TypeError: ctor is not a constructor
    at _createClass (http://localhost:9877/_karma_webpack_/vendor.bundle.js:42355:26)
    at _createProviderInstance$1 (http://localhost:9877/_karma_webpack_/vendor.bundle.js:42330:26)
    at resolveNgModuleDep (http://localhost:9877/_karma_webpack_/vendor.bundle.js:42315:17)
    at _createClass (http://localhost:9877/_karma_webpack_/vendor.bundle.js:42362:26)
    at _createProviderInstance$1 (http://localhost:9877/_karma_webpack_/vendor.bundle.js:42330:26)
    at resolveNgModuleDep (http://localhost:9877/_karma_webpack_/vendor.bundle.js:42315:17)
    at NgModuleRef_.webpackJsonp../node_modules/@angular/core/@angular/core.es5.js.NgModuleRef_.get (http://localhost:9877/_karma_webpack_/vendor.bundle.js:43401:16)
    at TestBed.webpackJsonp../node_modules/@angular/core/@angular/core/testing.es5.js.TestBed.get (http://localhost:9877/_karma_webpack_/vendor.bundle.js:48412:47)
    at http://localhost:9877/_karma_webpack_/vendor.bundle.js:48418:61
    at Array.map (native)

Ответы

Ответ 1

Это может быть ошибка в объявлениях поставщиков.

Когда вы пытаетесь издеваться над провайдером и используете useClass вместо useValue, запускается ошибка "TypeError: ctor is not a constructor".

Вот пример, который вызывает ошибку:

providers: [{provide: OrderService, useClass: new OrderServiceMock()}]

Правильное объявление:

providers: [{provide: OrderService, useValue: new OrderServiceMock()}]

Ответ 2

У меня было то же самое сообщение при создании моего приложения с помощью AOT.

Моя проблема не была связана с провайдерами, как предложил @abahet.

Это потому, что я настраивал новую библиотеку, которая не была совместима с AOT (и у нее также не было ни одного провайдера). В этой библиотеке было экспортировать (я говорю об Typescript export, а не о модуле Angular), что было импортировано в модуль (в этом случае компонент и труба).

Ответ 3

Третья возможность для вас, у меня был модуль, содержащий другие модули, и не экспортировал (Typescript) другие модули.