2017-10-01 9 views
1

AoT 컴파일이 여러 가지 이유로 실패하거나 많은 런타임 오류가 발생하는 경우가 많습니다.AOT가 아닌 모드에서만 서비스 매개 변수 (?)를 확인할 수 없습니다.

Can't resolve all parameters for ConfirmRemoveService (?)

이 내가 개발 또는 생산을 목표로하고 있지, 그리고 여부 나는 dev 또는를 사용하고 있는지 발생 : 내 응용 프로그램 오류와 비 AOT 모드 실패 : 나는 반대 문제가 있습니다 prod 환경. 예를 들어, 순수한 dev에 빌드는 내가 명시 적으로 AOT를 켜만큼 성공 :

ng serve -dev --aot 

오류 메시지에서 ? 위의 각도 Material2에 라이브러리에서, 유형 MatDialog을 의미합니다. 이 ConfirmRemoveService은 구성 요소가 모달 대화 상자를 표시하는 데 사용하는 서비스입니다.

이 문제는 해당 라이브러리의 베타 11 버전으로 업그레이드하는 것과 관련이있을 수도 있고 아닐 수도 있습니다. MaterialModule을 라이브러리에서 직접 가져 오는 것에서부터 MaterialModule이 제거 되었기 때문에, 이제 내 고유 모듈에 MatDialogModule과 같은 개별 각도 재료 2 모듈을 가져옵니다. 필요한 모듈을 가져옵니다. 그러나 이러한 것들로 인해 응용 프로그램이 AoT 모드에서 실행되지 않습니다. 오류가 발생하지 않는 것은 AoT가 아닌 모드입니다.

비 AoT 시나리오에서만 이러한 문제가 발생할 수있는 시나리오를 알고 계시나요?

+0

아니요, AoT **에서 해결할 수 있습니다. AoT에서 잘 작동합니다. 내가 ** AoT를 사용하지 않으면 실패합니다. –

+0

@yurzui 무엇과 무엇이 순환 의존성입니까? 'MatDialog'은 Angular Material2 안에있는 클래스입니다. 확실히 어떤 클래스로도 가리 키지 않습니다. 어쨌든 순환 의존성은 AoT 모드가 아니라 AoT가 아닌 모드에서 어떻게 나타 날 수 있습니까? –

+0

불필요한 질문으로 자신을 속이는 대신 작동하는 이유와 작동하지 않는 이유가 무엇인지, 올바르게 작동하지 않는 곳을 볼 수있는 프로그램을 만드는 것이 가장 좋습니다. –

답변

0

이 문제는 tsconfig.json에 라인이 누락으로 인해이었던 것으로 밝혀 :

"emitDecoratorMetadata": true 

내가 나는 그것이 Angular-을 컴파일하는 경우에만 필요하다고 생각하고, 가사의 적합의 어느 시점에서이 제거 생각 친숙한 도서관.

내 의심은 AOT에서 실행할 때, ngc 대신 tsc의 사용, 그리고 ngc 따라서 만 비 AOT 모드에서 스스로를 만들어 낸 버그를 차지 기본적으로이 설정을 제공합니다.

+0

ngc는 기본적으로이 설정을 제공하지 않으므로 typescript api를 사용하여 메타 데이터 수집기를 사용하여 메타 데이터를 수집합니다. typescript api는 타이프 스크립트 노드에서 제공되는 데코레이터를 읽는 데 사용됩니다. – yurzui

+0

이 답변은 질문을 편집하지 않아도됩니다. 명확한 문제 성명서. –

+0

질문은 오류 메시지가 표시되는 이유입니다. 대답은 오류 메시지를 없애는 해결책을 제시합니다. 그것은 일반적으로 작동하는 방법입니다. 문제는 약간의 문제이며 그 해답은 문제에 대한 해결책입니다. "questIon"과 "대답"의 기본 개념을 이해하는 데 어려움을 겪는 이유는 내게있어 신비입니다. –