웹/프론트엔드
[React] Jest SyntaxError: Cannot use import statement outside a module
이민훈
2022. 8. 16. 02:44
TDD를 공부하기 위해 Jest를 설치하고...
//jest.setup.js
import "@testing-library/jest-dom";
react testing library를 사용하기 위해 jest.setup.js 파일을 생성하고 test를 실행하는데 에러가 발생했다.
공식문서와 스택오버플로우를 돌아다니며 설정 프로퍼티에 대한 설명을 읽고 아래와 같이 다 세팅했음에도
SyntaxError: Cannot use import statement outside a module 에러가 자꾸 발생했는데...
//babel.config.js
module.exports = {
presets: [
["@babel/preset-env", { targets: { node: "current" } }],
"@babel/preset-typescript",
],
};
//jest.config.js
module.exports = {
verbose: true,
preset: "ts-jest",
testEnvironment: "jsdom",
transform: {
"^.+\\.(ts|tsx)$": "ts-jest",
},
transformIgnorePatterns: ["<rootDir>/node_modules/"],
setupFilesAfterEnv: ["<rootDir>/jest.setup.js"],
moduleNameMapper: {
"^.+\\.(css|less|scss)$": "identity-obj-proxy",
},
};
jest.setup.js는 js 파일이라 transfrom 프로퍼티에 있는 정규식에 포함되지 못해
javaScript로 변환되지 못했던 것이다.(!)
jest.setup.js파일을 jest.setup.ts파일로 바꿔주거나 js|jsx를 babel-jest로 transform하게끔 추가해주면 된다.
module.exports = {
verbose: true,
preset: "ts-jest",
testEnvironment: "jsdom",
transform: {
"^.+\\.(ts|tsx)$": "ts-jest",
"^.+\\.(js|jsx)$": "babel-jest",
},
transformIgnorePatterns: ["<rootDir>/node_modules/"],
setupFilesAfterEnv: ["<rootDir>/jest.setup.js"],
moduleNameMapper: {
"^.+\\.(css|less|scss)$": "identity-obj-proxy",
},
};