programing

Node.js에서 가져오기: "ES 모듈을 로드하려면 가져오기를 사용해야 함" 오류

goodsources 2023. 7. 25. 20:55
반응형

Node.js에서 가져오기: "ES 모듈을 로드하려면 가져오기를 사용해야 함" 오류

가져오려고 합니다.myArrhello.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에 대한 중요한 버그 수정은 계속 게시됩니다.

저는 당신의 코드를 문제없이 실행했습니다.다음 두 가지 사항을 확인합니다.

  1. Node.js 버전 > = 14.최신 버전의 Node.js에서만 작동합니다.
  2. 다음 항목을 확인합니다.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 버전에 있다는 것을 깨달았습니다.

두 가지 옵션이 있었습니다.

  1. Node.js 버전을 이 프로젝트에 필요한 버전으로 변경하고 다시 빌드합니다.
  2. 현재 가지고 있는 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

반응형