문제 상황
apollo-cli로 graphQL 스키마를 이용해 typescript type을 생성한다. 생성한 타입 정의를 이용하기 위해 프로젝트 폴더/generated/globalTypes.ts 를 소스 파일에서 import 하고 yarn start로 시작하면
You attempted to import ../../../__generated__/globalTypes which falls outside of the project src/ directory. Relative imports outside of src/ are not supported.
와 같은 컴파일 에러가 발생한다
배경
create-react-app으로 생성된 리액트 프로젝트는 src/ 하위에 있는 module만 import할 수 있도록 제한한다.
그러나 apollo cli의 apollo codegen:generate 명령(또는 apollo client:codegen)은 기본 설정으로 src/가 아닌 프로젝트 폴더 바로 하위에 globalTypes.ts를 생성한다.
따라서 globalTypes.ts가 생성되는 위치를 src 하위로 바꿀 필요가 있다.
해결법
--globalTypesFile 옵션으로 globalTypes 파일이 생성되는 경로를 src 하위로 바꾼다.
즉 apollo codegen:generate --globalTypesFile=./src/graphQL/__generated__/globalTypes.ts 와 같은 형태로 codegen을 실행한다.
src 밖에 위치한 이전 globalTypes를 import하는 코드는 import 경로를 새로 생성된 src 하위의 globalTypes 파일 경로(예시에서는 src/graphQL/__generated__/globalTypes.ts)로 변경한다.
'React' 카테고리의 다른 글
| [React] 뒤로가기 이벤트를 탐지하는 방법 (react router v6 적용 가능) (3) | 2022.01.19 |
|---|---|
| useEffect() clean up은 언제 동작할까? (0) | 2022.01.17 |
| React svg 파일 import 하는 방법 - Failed to execute 'createElement' 에러 해결법 (0) | 2022.01.11 |