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) другие модули.