저장을 습관화

NestJS - tsconfig.json의 "esModuleInterop" 옵션 본문

공부/node.js

NestJS - tsconfig.json의 "esModuleInterop" 옵션

ctrs 2023. 11. 4. 01:39

메모...

 

tsconfig.json에 아래와 같이 "esModuleInterop": true 옵션을 추가한다.

{
  "compilerOptions": {
    "esModuleInterop": true
  }
}

 

 

타입스크립트 컴파일러는 기본적으로 CommonJS의 exports, require 형태의 코드를 생성한다.

이 코드를 ES6 코드 베이스로 가져올때 문제가 발생하는데

esModuleInterop : true 옵션을 줌으로써 commonJS 모듈과 ES6 모듈을 서로 호환되게끔 해줄 수 있다.

 

예를들어..

분명히 import한 라이브러리가 undefined 등의 에러가 발생하는 것을 방지한다거나

 

 

모든 라이브러리(*)를 가져올때 아래와 같이 작성던 것을

import * as react from 'react'

 

아래 처럼 `* as` 구문을 생략하기도 한다..

import react from 'react'

 

 

구글 검색해보면 이 옵션으로 에러를 잡았다는 글들이 많으니 기억해두도록 하자

 

그렇다고 이 옵션을 항상 켜두는 것도 좋지는 않은 듯 하다

이미 잘 진행 중인 프로젝트에서 esModuleInterop 옵션을 true로 수정하니 에러가 발생하는 경우도 있다고..

애당초 디폴트가 false인 이유가 있겠지만 아직은 모르겠다.. 더 공부하자