TypeScript Jest: Cannot use import statement outside module

Ethan Yu·2023년 6월 11일
0

errors

목록 보기
1/4
post-thumbnail

현상

해시 함수의 유닛테스트를 위해 테스트 코드를 짜고 있던 중,

SyntaxError: Cannot use import statement outside a module 를 만나버렸습니다. 😈

원인

typescript를 이용하고 있었기 때문에 javascript로 트랜스파일링이 필요함에도, 테스트를 즉시 실행시켜 오류가 발생한 것이었습니다.
추가적으로 import문은 ES6에서 새로 도입된 키워드이기 때문에 jest가 해당 문법을 이해하지 못한 것입니다.

해결

  • jest가 이해할 수 있도록 javascript commonjs 모듈로 변경이 필요했습니다.
  • babel이 먼저 떠올랐으나, next.js 13.4 - swc를 사용하고 있어 babel 설정시 충돌이 날 수 있다고 생각했습니다.
  • 그리고 실제로 babel.config.ts를 생성하자 충돌이 발생하여 컴파일을 실패하였습니다.

👍 ts-jest 프리셋을 이용하기로 하였습니다.

👉ts-jest

  • jest.config.ts 에서 아래와 같이 ts-jest 프리셋을 등록해주었습니다.

    module.exports = {
        preset: 'ts-jest',
        testEnvironment: 'node',
        transform: {
          '^.+\\.ts?$': 'ts-jest',
        },
        transformIgnorePatterns: ['<rootDir>/node_modules/'],
    };
  • 성공적으로 돌아갑니다.

profile
🧐 사용자와 개발자를 모두 배려하고 싶은 개발자. 백엔드부터 임베디드까지 다양하게 개발하다가 지금은 🎨 프런트엔드에 자리잡았어요.

0개의 댓글