Node.js에서 가져오기: "ES 모듈을 로드하려면 가져오기를 사용해야 함" 오류
가져오려고 합니다.myArr
hello.js에서 index.js로 이동합니다.하지만 다음과 같은 오류가 발생합니다.
Error [ERR_REQUIRE_ESM]: Must use import to load ES Module
파일 hello.js
export let myArr = ['hello', 'hi', 'hey'];
파일 인덱스.js
import { myArr } from './hello.js';
console.log(myArr);
제가 어디서 잘못되고 있나요?
버전 2 사용:
npm install node-fetch@2
v3의 node-fetch는 ESM 전용 모듈입니다. require()로 가져올 수 없습니다.
ESM으로 전환할 수 없는 경우 CommonJS와 호환되는 v2를 사용하십시오.v2에 대한 중요한 버그 수정은 계속 게시됩니다.
저는 당신의 코드를 문제없이 실행했습니다.다음 두 가지 사항을 확인합니다.
- Node.js 버전 > = 14.최신 버전의 Node.js에서만 작동합니다.
- 다음 항목을 확인합니다.
package.json
에 대한 행 포함"type": "module"
이 줄이 없으면 Node.js는 공용을 사용할 것으로 가정합니다.ESM이 아닌 JS 모듈.
저는 리액트 프로젝트를 구축하는 동안 비슷한 문제에 부딪혔습니다.
오류는 다음과 같습니다.
ERROR in ./src/index.js
Module build failed (from ./node_modules/babel-loader/lib/index.js):
Error [ERR_REQUIRE_ESM]: Must use import to load ES Module: /home/pradeep/Work/my_project/node_modules/@babel/runtime/helpers/interopRequireWildcard/_index.mjs
그리고 나서 저는 제가 이 프로젝트에서 패키지를 설치할 때 사용했던 버전과 다른 Node.js 버전에 있다는 것을 깨달았습니다.
두 가지 옵션이 있었습니다.
- Node.js 버전을 이 프로젝트에 필요한 버전으로 변경하고 다시 빌드합니다.
- 현재 가지고 있는 Node.js 버전을 그대로 유지하고 node_modules 디렉토리와 package-lock.json 파일을 제거한 후 donpm을 다시 설치합니다.
저는 첫 번째 접근법을 선택했고 그것은 저에게 효과가 있었습니다.
Node.js 버전이 14보다 낮은 경우(예: v12) 이 플래그를 지정해야 합니다.
node --experimental-modules your.mjs
nvm을 사용하여 최신 안정 버전의 Node.js를 설치합니다.
package-lock.json 파일과 node_modules 폴더를 삭제하려면 npm을 실행합니다.나는npm start
내 문제를 해결하기 위해.
hello.js의 이름을 hello.mjs로 변경합니다.
공용을 사용하고 있습니다..js 확장자를 가진 JS.ES6 모듈을 가져오려면 가져오려는 파일의 확장자를 .mjs로 변경해야 ES6 모듈임을 알 수 있습니다.
문제는 Node.js가 현재 기본적으로 가져오기 및 내보내기를 지원하지 않는다는 것입니다.문서에 따르면 그것은 여전히 실험적입니다.Babel을 사용하여 코드를 컴파일하고 가져오기 및 내보내기를 사용할 수 있도록 하는 것이 좋습니다.
예를 들어 @babel/node 패키지를 설치하고 다음을 사용하여 프로젝트를 실행할 수 있습니다.
npx babel-node index.js
다음은 @babel/node에 대한 설명서입니다.설명서 상태와 마찬가지로 이 명령은 로컬 개발에만 사용됩니다.운영 환경에서는 이러한 구성을 권장합니다.
언급URL : https://stackoverflow.com/questions/61670459/importing-in-node-js-error-must-use-import-to-load-es-module
'programing' 카테고리의 다른 글
JetBrain의 DataGrip은 PL/SQL 개발을 지원합니까? (0) | 2023.07.25 |
---|---|
PowerShell 이 용어는 cmdlet 함수 스크립트 파일 또는 작동 가능한 프로그램으로 인식되지 않습니다. (0) | 2023.07.25 |
PHP - 배열에서 마지막 요소 앞에 있는 요소를 가져오는 방법은 무엇입니까? (0) | 2023.07.25 |
Node.js에서 대용량 로그 파일 구문 분석 - 한 줄씩 읽기 (0) | 2023.07.25 |
Spring Boot @RepositoryRestResource를 특정 URL에 매핑하려면 어떻게 해야 합니까? (0) | 2023.07.25 |