코딩과로그

typescript 내 jest 적용 중 import 에러 수정 (feat: esModuleInterop) 본문

Node.js

typescript 내 jest 적용 중 import 에러 수정 (feat: esModuleInterop)

피리음 2023. 2. 14. 14:00
    TypeError: Cannot read property 'config' of undefined

      2 | import dotenv from 'dotenv';
    > 3 | dotenv.config({
        |        ^

내 프로젝트에 jest를 적용하려 했고 빌드 중 위와 같이 에러가 발생했다.

검색 결과, tsconfig.json의 설정에서 esModuleInterop  를 true로 수정하면 정상적으로 동작했다.

 

왜 esModuleInterop를 true로 바꿔주면 정상적으로 동작할까?

이는 다음과 같은 모듈과 관련이 있었다.

  - CommonJS/AMD/UMD modules

  - ES6 modules

 

자바스크립트의 import 문법은 모듈마다 서로 상이한 부분이 있었다.

기본적으로 빌드 시 ES6 modules 형식으로 처리하며, 만약 기존 코드가 CommonJS 등의 모듈 형식 (import, required) 문법으로 있다면 ES6 modules 형식에 호환되게끔 코드를 변경하는 작업이 필요했다.tsconfig.json에서 esModuleInterop 를 true로 바꿔주면 이 작업이 자동으로 처리되었다.

 

보다 상세한 내용은 아래의 링크를 참조:

https://stackoverflow.com/a/56348146/9770854