Próbuję przetestować mój program rozpoznawania tras i podczas testowania otrzymałem TypeError: ctor is not a constructor
i nie mam pojęcia, dlaczego tak się dzieje, gdy czas kompilacji maszynopisu nie ma błędu.
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
Aniruddha Das
źródło
źródło
Odpowiedzi:
Może to być błąd w deklaracjach dostawców.
Podczas próby sfałszowania dostawcy i użycia useClass zamiast useValue wywoływany jest błąd „TypeError: ctor is not a constructor”.
Oto przykład, który uruchamia błąd:
Prawidłowa deklaracja to:
źródło
{ provide: httpTestingControllerToken, useClass: HttpTestingController },
, gdzie zadeklarowałemconst httpTestingControllerToken = new InjectionToken<HttpTestingController>('httpTestingControllerToken');
... to jest podczas próby zastąpienia przestarzałegoTestBed.get
. Jakieś pomysły?Dokładnie ten sam komunikat otrzymałem podczas tworzenia aplikacji za pomocą AOT.
Mój problem nie był związany z dostawcami, jak sugerował @abahet.
To dlatego, że skonfigurowałem nową bibliotekę, która nie była zgodna z AOT (i nie miała też żadnego dostawcy). Biblioteka, o której mowa, musiała wyeksportować (mówię o eksporcie Typescript, a nie z modułu Angular) to, co zostało zaimportowane w module (w tym przypadku komponent i potok).
źródło
Miałem ten problem z Angular Universal w połączeniu z Firebase w projekcie Firebase Universal Starter. Prawie straciłem nadzieję, ponieważ wszystkie potencjalne poprawki przepełnienia stosu nie pomogły. Zrobiłem więc co następuje:
Nigdy nie dowiedziałem się, który pakiet spowodował błąd, ale jednym ze sposobów, aby się tego dowiedzieć, jest utworzenie MockAppModule, w którym usuwasz moduły jeden po drugim. W końcu znajdziesz tego z problemem. Ale w moim przypadku miałem szczęście, ponieważ jeden z błędnych pakietów został zaktualizowany lub coś takiego.
źródło
Trzecia możliwość dla ciebie, miałem moduł zawierający inne moduły i nie eksportowałem (mówienie na maszynie) innych modułów.
źródło
Ja też miałem ten problem z włączonym AOT Dodałem nowy plik usługi. Zrestartowałem kompilator i problem został rozwiązany.
źródło