source

angular 4 unit testing error 'TypeError: cctor는 생성자가 아닙니다'

nicesource 2023. 10. 31. 22:23
반응형

angular 4 unit testing error 'TypeError: cctor는 생성자가 아닙니다'

루트 레졸버를 테스트하려고 하는데 테스트하는 동안TypeError: ctor is not a constructor스크립트 컴파일 시간에 오류가 없는 동안 왜 이런 일이 일어나는지 전혀 모릅니다.

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 대신 Class를 사용하려고 하면 "TypeError: ctor is not constructor"라는 오류가 발생합니다.

오류가 발생하는 예는 다음과 같습니다.

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

정확한 선언은 다음과 같습니다.

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

AOT로 앱을 만들 때도 똑같은 메시지가 있었습니다.

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

AOT를 준수하지 않는 새로운 라이브러리를 설정했기 때문입니다(그리고 프로바이더도 없었습니다).해당 라이브러리는 모듈(이 경우 구성 요소 및 파이프)에 가져온 것을 내보내야 했습니다(각형 모듈에서 가져온 것이 아니라 Typescript 내보내기를 말하는 것입니다).

파이어베이스 유니버셜 스타터 프로젝트에서 파이어베이스와 결합하여 앵귤러 유니버셜에 문제가 생겼습니다.스택 오버플로에 대한 모든 잠재적인 수정 사항이 도움이 되지 않아 희망을 잃을 뻔했습니다.그래서 저는 다음과 같이 했습니다.

  1. https://www.npmjs.com/package/npm-check-updates 을 사용하여 모든 npm 패키지
  2. node_modules 및 .package-lock.json을 제거하고 다시 설치합니다.
  3. 변경된 api로 인한 모든 오류 수정
  4. 이제 효과가 있네요 :-)

어떤 패키지가 오류를 일으켰는지는 한 번도 파악하지 못했지만, 한 가지 방법은 모듈을 하나씩 제거하는 MockAppModule을 만드는 것입니다.결국 당신은 문제가 있는 사람을 찾게 될 것입니다.하지만 제 경우에는 운이 좋게도 버그가 있는 패키지 중 하나가 업데이트됐거나 해서 그런 것 같습니다.

세 번째 가능성, 저는 다른 모듈이 포함된 모듈을 가지고 있었고 다른 모듈을 내보내지 않았습니다(Typescript speaking).

저도 AOT가 활성화 되어있는 문제가 있었습니다.새로운 서비스 파일을 추가했습니다.컴파일러를 다시 시작해보니 문제가 해결되었습니다.

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

반응형