Jest - SyntaxError: 모듈 외부에서 Import 문을 사용할 수 없습니다.
사용하고 있다jest:24.9.0
create-module-app에서 글로벌하게 설치됩니다.이 파일들 중에서 저는 es6 모듈을 사용하고 있습니다.사용 시 오류는 없습니다."test": "react-scripts test"
그러나 내가 사용으로 이동했을 때jest
와 함께"test": "jest --config jest.config.js",
이하의 에러가 표시됩니다.
FAIL src/configuration/notifications.test.js
● Test suite failed to run
/var/www/management/node/src/configuration/notifications.test.js:1
({"Object.<anonymous>":function(module,exports,require,__dirname,__filename,global,jest){import notifications from './notifications';
^^^^^^
SyntaxError: Cannot use import statement outside a module
농담은 지원되지 않습니다.ES6
이 에러는 Jest를 사용하여 직접 테스트를 실행할 때 발생합니다.그렇게 뛰려면 바벨을 넣어야 돼.
다른 쪽에서는 테스트를 실행할 때react-scripts
뒤에서 바벨을 사용하여 코드를 변환합니다.
새로운 버전의 농담에서는
babel-jest
이제 Jest에 의해 자동으로 로드되고 완전히 통합됩니다.
이것이 당신의 질문에 답하길 바랍니다.
농담으로 바벨을 추가하다.
인스톨
babel-jest
이제 Jest에 의해 자동으로 로드되고 완전히 통합됩니다.이 절차는 babel-jest를 사용하여 TypeScript 파일을 변환하는 경우에만 필요합니다.
npm install --save-dev babel-jest
사용.
고객님의 고객명package.json
file은 다음과 같이 변경합니다.
{
"scripts": {
"test": "jest"
},
"jest": {
"transform": {
"^.+\\.[t|j]sx?$": "babel-jest"
}
}
}
만들다.babelrc
컨피규레이션파일
작성하다babel.config.json
프로젝트 루트에서 구성 및 활성화presets
.
시작하기 전에 ES2015+에 대한 변환을 활성화하는 env 사전 설정을 사용할 수 있습니다.
npm install @babel/preset-env --save-dev
사전 설정을 활성화하려면 사전 설정을babel.config.json
다음과 같은 파일:
{
"presets": ["@babel/preset-env"]
}
자세한 내용은 Babel 공식 사이트에서 확인하세요.
위의 답변에서 설명한 바와 같이 Jest는 ES6 모듈을 지원하지 않습니다.따라서 코드를 지원되는 모듈 유형으로 변환해야 합니다.우리는 이용할 수 있다.babel-jest
또는ts-jest
를 사용하는 것을 추천합니다.ts-jest
심플하게.
순서 1: 설치:
npm i -D ts-jest @types/jest
또는yarn add --dev ts-jest @types/jest
순서 2: 설정
옵션 1: 재스트 컨피규레이션파일 생성jest.config.js
module.exports = {
transform: {
'^.+\\.(ts|tsx)$': 'ts-jest',
},
};
옵션 2: 재스트 설정 추가package.json
"jest": {
"transform": {
"^.+\\.(ts|tsx)$": "ts-jest"
}
}
스텝 3: 스크립트를 실행합니다.이제 모든 것이 준비되어야 한다.
joke는 esmodules에서는 잘 동작하지 않기 때문에, 이러한 설정을 에 추가할 필요가 있습니다.jest.config.js
제스트에게 공통의 말을 쓰라고 하다대신 JS 빌드
moduleNameMapper : {
'^react-dnd$': 'react-dnd/dist/cjs',
'^react-dnd-html5-backend$': 'react-dnd-html5-backend/dist/cjs',
'^dnd-core$': 'dnd-core/dist/cjs',
}
ECMAScript와 함께 Typescript를 사용하는 경우.가장 간단한 해결책은 TypeScript 프리프로세서인 ts-jest를 사용하는 것입니다.
- 설치하다
npm i -D ts-jest @types/jest
- 테스트 실행
jest
에러
SyntaxError: Cannot use import statement outside a module
또, 다음의 Import 라이브러리로부터도 입수할 수 있습니다.node_modules
,예를들면
...\node_modules\node-fetch\src\index.js:9
import http from 'node:http';
^^^^^^
내게 요령이었던 건,transformIgnorePatterns
옵션을 지정합니다.
transformIgnorePatterns: [
'node_modules/(?!' +
[
'node-fetch',
'fetch-blob',
'data-uri-to-buffer',
'jest-runtime',
'formdata-polyfill'
].join('|') +
')',
],
도 참조해 주세요.
es6를 사용하는 node_modules에서 jest를 설정하는 방법
리액트 스크립트를 사용하여 테스트 실행 시 동일한 오류가 발생하였습니다.패키지의 라인을 변경하여 이 문제를 해결할 수 있었습니다.json
"test": "react-scripts test",
로.
"test": "NODE_OPTIONS=--experimental-vm-modules react-scripts test",
이 해결 방법을 나타내는 링크를 제공하는 오류 메시지에서 다음을 수행합니다.
Here's what you can do:
• If you are trying to use ECMAScript Modules, see https://jestjs.io/docs/ecmascript-modules for how to enable it.
제가 이 문제를 어떻게 쉽게 일으켰는지 덧붙이고 싶었습니다.모든 *.js를 .gitignore에 포함시킴으로써 jeast.config.js 파일을 커밋할 수 없게 되었습니다.CI가 실행될 때마다 이 오류가 발생합니다.이는 repo에 버전 제어된 jeast.config.js가 없었기 때문입니다.조심해, 얘들아! 냉정하게 있어.
언급URL : https://stackoverflow.com/questions/59879689/jest-syntaxerror-cannot-use-import-statement-outside-a-module
'source' 카테고리의 다른 글
Google 지도 iframe 주소 팝업 제거 (0) | 2023.03.28 |
---|---|
Oracle 데이터베이스 열의 특정 값을 대체하려면 어떻게 해야 합니까? (0) | 2023.03.23 |
Oracle 데이터베이스에 대한 모든 보기 표시 (0) | 2023.03.23 |
react-icons 패키지에서 글꼴 표시 아이콘을 확대(크게)하는 방법 (0) | 2023.03.23 |
div의 Outside를 클릭할 때 div를 숨기는 방법을 잘 모르겠습니다. (0) | 2023.03.23 |