Я пытаюсь протестировать свой распознаватель маршрутов, и во время тестирования я получил TypeError: ctor is not a constructor
и не знаю, почему это происходит, пока время компиляции машинописного текста без ошибок.
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)
angular
karma-runner
angular-routing
Анируддха Дас
источник
источник
Ответы:
Это может быть ошибка в объявлениях провайдеров.
Когда вы пытаетесь издеваться над поставщиком и используете useClass вместо useValue, выдается ошибка «TypeError: ctor не конструктор».
Вот пример, вызывающий ошибку:
Правильное объявление:
источник
{ provide: httpTestingControllerToken, useClass: HttpTestingController },
, где я заявилconst httpTestingControllerToken = new InjectionToken<HttpTestingController>('httpTestingControllerToken');
... это при попытке заменить устаревшееTestBed.get
. Любые идеи?У меня было точно такое же сообщение при создании моего приложения с помощью AOT.
Моя проблема не была связана с поставщиками, как предлагал @abahet.
Это произошло потому, что я установил новую библиотеку, которая не была совместима с AOT (и не имела поставщика). Рассматриваемая библиотека должна была экспортировать (я говорю об экспорте Typescript, а не из модуля Angular) то, что было импортировано в модуль (в данном случае компонент и канал).
источник
У меня была эта проблема с Angular Universal в сочетании с Firebase в проекте Firebase Universal Starter. Я почти потерял надежду, так как все возможные исправления переполнения стека не помогли. Итак, я сделал следующее:
Я так и не узнал, какой пакет вызвал ошибку, но один из способов выяснить это - создать MockAppModule, в котором вы удаляете модули один за другим. В конце концов вы найдете того, у кого проблема. Но в моем случае мне повезло, наверное, из-за того, что один из пакетов с ошибками обновился или что-то в этом роде.
источник
Третья возможность для вас: у меня был модуль, содержащий другие модули, и я не экспортировал (говоря на TypeScript) другие модули.
источник
У меня тоже была эта проблема с включенным AOT. Я добавил новый служебный файл. Я перезапустил компилятор, и проблема решена.
источник