Estou tentando testar meu resolvedor de rotas e, durante o teste, não tenho TypeError: ctor is not a constructor
ideia de por que isso aconteceu enquanto o texto digitado é compilado sem erros.
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
fonte
fonte
Respostas:
Isso pode ser um erro nas declarações dos provedores.
Quando você tenta simular um provedor e usar useClass em vez de useValue, o erro "TypeError: ctor não é um construtor" é disparado.
Aqui está um exemplo que dispara o erro:
A declaração correta é:
fonte
{ provide: httpTestingControllerToken, useClass: HttpTestingController },
, onde declareiconst httpTestingControllerToken = new InjectionToken<HttpTestingController>('httpTestingControllerToken');
... isso é quando tento substituir o obsoletoTestBed.get
. Alguma ideia?Recebi exatamente a mesma mensagem ao criar meu aplicativo com AOT.
Meu problema não estava relacionado a provedores como @abahet sugeriu.
Foi porque eu configurei uma nova biblioteca que não era compatível com AOT (e também não tinha nenhum provedor). A biblioteca em questão teve que exportar (estou falando de exportação do Typescript, não do módulo Angular) o que foi importado no módulo (neste caso, um componente e um pipe).
fonte
Tive esse problema com o Angular Universal em combinação com o Firebase em um projeto Firebase Universal Starter. Eu quase perdi as esperanças, pois todas as possíveis correções no estouro de pilha não ajudaram. Então eu fiz o seguinte:
Eu nunca descobri qual pacote causou o erro, mas uma abordagem para descobrir é criar um MockAppModule onde você remove os módulos um por um. Eventualmente, você encontrará aquele com o problema. Mas, no meu caso, tive sorte, acho que um dos pacotes bugados foi atualizado ou algo assim.
fonte
Terceira possibilidade para você, eu tinha um módulo contendo outros módulos e não exportei (falando no texto digitado) os outros módulos.
fonte
Eu também tive esse problema com AOT ativado. Adicionei um novo arquivo de serviço. Reiniciei o compilador e o problema foi resolvido.
fonte