inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

테스트 with Jest: 제로초에게 제대로 배우기

타입스크립트 세팅

TS로 변경 시 "type": "module" 제거 이유가 궁금합니다.

299

모락

작성한 질문수 2

0

확장자를 TS로 변경했을 때 코드에는 ESM의 import, export를 사용했는데 왜 package.json파일의 ESM 관련 옵션인 "type": "module"을 제거하는지 궁금합니다.

 

GPT의 답변에 의하면

라고 설명을 해주는데 그럼 JS 파일의 경우 Jest와의 호환성을 고려하지 않는건지..

이해가 잘 되지 않습니다. 혹시 설명을 해주실 수 있을까요?

supertest jest 소프트웨어-테스트 unittest

답변 2

0

ieun32

저도 궁금해요! 오히려 type: module 빼니까 npx jest 할 때 모듈 관련 에러가, 다시 넣으니까 에러가 사라졌어요!

0

인프런 AI 인턴

안녕하세요, 인프런 AI 인턴입니다.
모락님께서 질문하신 내용에 대해서 설명드리겠습니다.

TypeScript 파일(.ts)은 TS 컴파일러에 의해 JavaScript로 변환됩니다. 이 과정에서 모듈 시스템(CommonJS 또는 ESM)이 지정될 수 있으며, 일반적으로 tsconfig.json 파일에서 설정할 수 있습니다. 그렇기 때문에 TypeScript 파일에서는 package.json"type": "module" 옵션이 필수적이지 않을 수 있습니다.

Jest와 관련하여 "type": "module"을 삭제하는 이유는 Jest의 기본 모듈 시스템이 CommonJS이기 때문입니다. Jest와 ESM 모듈과의 호환성 문제 때문에 TS의 경우 CommonJS로 설정하는 경우가 많고, 따라서 "type": "module"을 제거해 Jest와의 호환성을 높이는 것입니다.

JS 파일의 경우 기본적으로 CommonJS 모듈을 사용합니다. JS 파일에서 ESM 방식의 import, export를 사용하려면 "type": "module"을 추가해 ESM 방식으로 해석하도록 명시합니다.

하지만 Jest가 ESM을 지원하기 위해 추가 설정이 필요로 할 수 있기 때문에 호환성 문제를 피하려고 CommonJS 사용을 유지하는 경우가 많습니다.

즉, TS 파일의 경우 컴파일 과정에서 CommonJS로 변환하는 것이 보통이기 때문에 "type": "module"이 필요 없으며, ESM을 지원하는 Jest 설정이 번거롭기 때문에 이러한 설정을 채택합니다.

더 궁금한 점이 있으시면 언제든지 질문해 주세요!
Spring Data 자체 ESM/Jackson 지원 참고 자료도 도움이 될 수 있습니다.
감사합니다.

UserService, CertificationService 책임 분리 기준 질문

0

24

1

레이어드 아키텍처에서 도메인 중심 패키지 구조를 적용하거나 변화하는 시점이 있을까요?

1

38

2

POJO에서 Spring Test로 넘어갈 때 누락(해결됨)

0

32

1

섹션 4) 8. 실무 QA의 관찰 포인트 이해 강의 질문

0

36

1

tryMove(..) 메서드 ArrayIndexOutOfBoundsException 제보

1

60

2

AvailableUsers

0

40

1

선생님, 테스트 코드 제보 강의는 언제쯤 올라오나요?

0

75

2

mockfunction에 대해서

0

52

1

mockfunction에 대해서

0

54

2

강의 교안

0

116

2

jest-extended 에러 해결

0

155

1

npx cross-env NODE_OPTIONS="$NODE_OPTIONS --experimental-vm-modules" jest 터미널 에러

1

195

1

안녕하세요 jest toHaveBeenCalledTimes 관련 질문드립니다.

0

166

2

안녕하세요 제로초님

0

166

1

제로초님 강의 교안을 볼 수 있는 곳이 있을까요?

0

232

3

jest.fn()으로 모킹 함수를 만들어 expect() 할 경우 undefined 출력됩니다

0

102

1

jest-extended 설정 중 TypeError

0

167

1

클래스는 어떻게 모킹하나요?

0

158

1

호출 순서 테스트, mock 객체, jest-extended 강의 내용중 TypeError가 나는데요!ㅠㅠ

0

136

1

모듈 모킹 시 메소드 동작 문제

0

159

1

vsCode 내에서 Jest 설정 할 때 setting.json 내 설정 시 궁금한 점이 있습니다.

0

441

1

비동기 함수 테스트 중 특정 케이스 에러

0

192

1

jest.config.js 파일 내용 다른 분들 참고

0

326

2

강의 교안

0

257

2