마이의 개발 블로그

[Swagger] Token "Component" does not exist 에러 대처 방법 본문

개발지식/Web

[Swagger] Token "Component" does not exist 에러 대처 방법

개발자마이 2023. 1. 16. 12:05
반응형

스웨거 공식 문서에 기입된 스펙에 맞게 component를 작성한 후, 재사용되는 파라미터들(검색 창의 검색 파라미터)을 별도 문서에 정의하여 component별로 참조해서 사용하고자 하였다.

그러나 글 제목과 같은 에러메시지가 출력되어 원인을 검색해보니 다양한 이유와 해결방법이 제시되어있었는데, 나의 경우에는 순환참조로 인한 오류가 원인으로 드러났다(제목의 Component는 오류가 발생한 component의 이름을 의미한다).

내가 관리하는 스웨거의 구조에서는 경로관리파일, 컴포넌트(파라미터, 스키마 등) 정의 파일, 경로별/메서드별 정의(req 메서드, res 양식 등) 파일이 각각 다른 파일로 분리되어 있었는데 알고보니 컴포넌트 정의파일과 경로 파일이 서로를 참조하고 있었던 것이다.

문제의 원인이 눈에 바로 보이지 않았던 이유는 아래 처럼 각 파일의 참조 파일들을 두어번 정도 타고 들어가야 순환참조되는 파일로 연결되기 때문이였다. 
e.g. 컴포넌트 정의 파일 -> 경로관리파일 -> 경로별/메서드별 정의 파일 -> 컴포넌트 정의 파일
(화살표는 참조 방향)


순환참조되는 부분을 제거하여 문제는 해결할 수 있었으나, 근본적인 원인이 무엇인지는 찾을 수 없었다.

반응형
Comments