J'essaie de tester mon résolveur de route et pendant les tests, je n'ai TypeError: ctor is not a constructor
aucune idée de pourquoi cela se produit alors que le temps de compilation dactylographié ne comporte aucune erreur.
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
la source
la source
Réponses:
Cela peut être une erreur dans les déclarations des fournisseurs.
Lorsque vous essayez de vous moquer d'un fournisseur et d'utiliser useClass au lieu de useValue, l'erreur «TypeError: ctor n'est pas un constructeur» est déclenchée.
Voici un exemple qui déclenche l'erreur:
La déclaration correcte est:
la source
{ provide: httpTestingControllerToken, useClass: HttpTestingController },
, où j'ai déclaréconst httpTestingControllerToken = new InjectionToken<HttpTestingController>('httpTestingControllerToken');
... c'est en essayant de remplacer le obsolèteTestBed.get
. Des idées?J'ai eu exactement le même message lors de la création de mon application avec AOT.
Mon problème n'était pas lié aux fournisseurs comme le suggérait @abahet.
C'était parce que j'avais configuré une nouvelle bibliothèque qui n'était pas conforme à AOT (et n'avait aucun fournisseur non plus). La bibliothèque en question devait exporter (je parle d'export Typescript, pas celle du module Angular) ce qui était importé dans le module (dans ce cas, un composant et un tube).
la source
J'ai eu ce problème avec Angular Universal en combinaison avec Firebase dans un projet Firebase Universal Starter. J'avais presque perdu espoir car toutes les corrections potentielles sur le débordement de pile n'ont pas aidé. J'ai donc fait ce qui suit:
Je n'ai jamais découvert quel package a causé une erreur, mais une approche pour le savoir consiste à créer un MockAppModule dans lequel vous supprimez les modules un par un. Finalement, vous trouverez celui avec le problème. Mais dans mon cas, j'ai eu de la chance, je suppose, à cause de l'un des paquets buggés mis à jour ou quelque chose du genre.
la source
Troisième possibilité pour vous, j'avais un module contenant d'autres modules et je n'ai pas exporté (en langage typographique) les autres modules.
la source
J'ai aussi eu ce problème avec AOT activé. J'ai ajouté un nouveau fichier de service. J'ai redémarré le compilateur et le problème est résolu.
la source