Ich versuche meinen Routenauflöser zu testen und beim Testen habe ich TypeError: ctor is not a constructor
keine Ahnung warum es passiert, während Typoskript-Kompilierungszeit kein Fehler ist.
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
quelle
quelle
Antworten:
Dies kann ein Fehler in den Anbietererklärungen sein.
Wenn Sie versuchen, einen Anbieter zu verspotten und useClass anstelle von useValue zu verwenden, wird der Fehler "TypeError: ctor ist kein Konstruktor" ausgelöst.
Hier ist ein Beispiel, das den Fehler auslöst:
Die korrekte Erklärung lautet:
quelle
{ provide: httpTestingControllerToken, useClass: HttpTestingController },
, wenn ich mache , wo ich erklärt habeconst httpTestingControllerToken = new InjectionToken<HttpTestingController>('httpTestingControllerToken');
... dies ist, wenn ich versuche, das veraltete zu ersetzenTestBed.get
. Irgendwelche Ideen?Ich hatte genau die gleiche Nachricht beim Erstellen meiner App mit AOT.
Mein Problem hatte nichts mit Anbietern zu tun, wie @abahet vorgeschlagen hatte.
Das lag daran, dass ich eine neue Bibliothek eingerichtet habe, die nicht AOT-kompatibel war (und auch keinen Anbieter hatte). Die betreffende Bibliothek musste exportieren (ich spreche vom Typescript-Export, nicht vom Angular-Modul), was in das Modul importiert wurde (in diesem Fall eine Komponente und eine Pipe).
quelle
Ich hatte dieses Problem mit Angular Universal in Kombination mit Firebase in einem Firebase Universal Starter-Projekt. Ich hatte fast die Hoffnung verloren, da alle möglichen Korrekturen am Stapelüberlauf nicht geholfen hatten. Also habe ich folgendes gemacht:
Ich habe nie herausgefunden, welches Paket Fehler verursacht hat, aber ein Ansatz, um dies herauszufinden, besteht darin, ein MockAppModule zu erstellen, in dem Sie Module nacheinander entfernen. Schließlich finden Sie den mit dem Problem. Aber in meinem Fall hatte ich Glück, weil eines der fehlerhaften Pakete aktualisiert wurde oder so.
quelle
Dritte Möglichkeit für Sie: Ich hatte ein Modul mit anderen Modulen und habe die anderen Module nicht exportiert (Typoskript).
quelle
Ich hatte auch dieses Problem mit AOT aktiviert. Ich habe eine neue Servicedatei hinzugefügt. Ich habe den Compiler neu gestartet und das Problem ist behoben.
quelle