각도 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 에이 문제가 발생했습니다. 스택 오버플로에 대한 모든 잠재적 수정이 도움이되지 않았기 때문에 거의 희망을 잃었습니다. 그래서 다음을 수행했습니다.
- https://www.npmjs.com/package/npm-check-updates로 모든 npm 패키지 업데이트
- node_modules 및 .package-lock.json을 제거하고 다시 설치했습니다.
- 변경된 API로 인한 모든 오류 수정
- 이제 작동했습니다 :-)
어떤 패키지가 오류를 일으켰는지 알지 못했지만 알아내는 한 가지 방법은 모듈을 하나씩 제거하는 MockAppModule을 만드는 것입니다. 결국 문제가있는 사람을 찾을 수 있습니다. 그러나 제 경우에는 버그가있는 패키지 중 하나가 업데이트되거나 무언가가 업데이트 되었기 때문에 운이 좋았습니다.
세 번째 가능성은 다른 모듈을 포함하는 모듈이 있고 다른 모듈을 내 보내지 않았습니다 (Typescript 말하기).
나도 AOT가 활성화 된 상태에서이 문제가 발생했으며 새 서비스 파일을 추가했습니다. 컴파일러를 다시 시작했는데 문제가 해결되었습니다.
'developer tip' 카테고리의 다른 글
scrollIntoView 너무 멀리 스크롤 (0) | 2020.11.19 |
---|---|
Android WebView에서 확대 / 축소 활성화 / 비활성화 (0) | 2020.11.19 |
null을 확인하고 그렇지 않은 경우 다른 값을 할당하는 가장 짧은 방법 (0) | 2020.11.19 |
입력 IP가 특정 IP 범위에 속하는지 확인하는 방법 (0) | 2020.11.19 |
신속한 배열의 고유 값 (0) | 2020.11.19 |