공부/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인 이유가 있겠지만 아직은 모르겠다.. 더 공부하자