developer tip

각도 4 단위 테스트 오류`TypeError : ctor is not a constructor`

copycodes 2020. 11. 19. 21:39
반응형

각도 4 단위 테스트 오류`TypeError : ctor is not a constructor`


내 경로 확인자를 테스트하려고하는데 테스트 TypeError: ctor is not a constructor하는 동안 typescript 컴파일 시간에 오류가 발생하지 않는 이유를 알지 못했습니다.

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)

공급자 선언의 오류 일 수 있습니다.

공급자를 모의하고 useValue 대신 useClass를 사용하려고하면 "TypeError : ctor is not a constructor"오류가 발생합니다.

다음은 오류를 발생시키는 예입니다.

providers: [{provide: OrderService, useClass: new OrderServiceMock()}]

올바른 선언은 다음과 같습니다.

providers: [{provide: OrderService, useValue: new OrderServiceMock()}]

AOT로 앱을 만들 때 똑같은 메시지를 보냈습니다.

내 문제는 @abahet이 제안한 것처럼 공급자와 관련이 없습니다.

AOT와 호환되지 않는 새 라이브러리를 설정했기 때문입니다 (그리고 공급자도 없었습니다). 문제의 도서관에 있었다 수출 (이 경우, 구성 요소 및 파이프에서) 모듈에서 가져온 것 (나는 타이프 라이터 수출, 각도 모듈에서 안 하나에 대해서 이야기하고).


Firebase Universal Starter 프로젝트에서 Firebase와 함께 Angular Universal 에이 문제가 발생했습니다. 스택 오버플로에 대한 모든 잠재적 수정이 도움이되지 않았기 때문에 거의 희망을 잃었습니다. 그래서 다음을 수행했습니다.

  1. https://www.npmjs.com/package/npm-check-updates로 모든 npm 패키지 업데이트
  2. node_modules 및 .package-lock.json을 제거하고 다시 설치했습니다.
  3. 변경된 API로 인한 모든 오류 수정
  4. 이제 작동했습니다 :-)

어떤 패키지가 오류를 일으켰는지 알지 못했지만 알아내는 한 가지 방법은 모듈을 하나씩 제거하는 MockAppModule을 만드는 것입니다. 결국 문제가있는 사람을 찾을 수 있습니다. 그러나 제 경우에는 버그가있는 패키지 중 하나가 업데이트되거나 무언가가 업데이트 되었기 때문에 운이 좋았습니다.


세 번째 가능성은 다른 모듈을 포함하는 모듈이 있고 다른 모듈을 내 보내지 않았습니다 (Typescript 말하기).


나도 AOT가 활성화 된 상태에서이 문제가 발생했으며 새 서비스 파일을 추가했습니다. 컴파일러를 다시 시작했는데 문제가 해결되었습니다.

참고 URL : https://stackoverflow.com/questions/44597532/angular-4-unit-testing-error-typeerror-ctor-is-not-a-constructor

반응형