TechFeedTechFeed
Node.js설정

Node ERR_REQUIRE_ESM — ESM 모듈을 require로 불러옴

Error [ERR_REQUIRE_ESM]: require() of ES Module ... not supported
한 줄 해결: CommonJS의 require로 ESM 전용 패키지를 불러와 발생하며, dynamic import를 쓰거나 프로젝트를 ESM으로 전환하면 됩니다.

이런 증상일 때

require()로 패키지를 부를 때 ERR_REQUIRE_ESM이 납니다. 최신 버전에서 ESM 전용으로 바뀐 패키지(node-fetch v3, chalk v5 등)에서 자주 발생합니다.

원인

  • CommonJS(require) 환경에서 ESM 전용(exports에 import만) 패키지를 require
  • 패키지가 메이저 버전업하며 ESM 전용으로 전환
  • package.json에 type:module이 없는데 .js에서 import 사용

해결 방법

1
dynamic import 사용

CommonJS를 유지하면서 ESM 패키지는 await import()로 불러옵니다.

const { default: fetch } = await import('node-fetch')
2
프로젝트를 ESM으로

package.json에 type:module을 추가하고 require를 import로 전환합니다.

// package.json
{ "type": "module" }
3
CommonJS 호환 버전 고정

당장 전환이 어려우면 CommonJS를 지원하는 이전 메이저 버전으로 고정합니다.

npm install node-fetch@2
💡 예방: 패키지 메이저 업그레이드 시 CHANGELOG에서 ESM 전용 전환 여부를 확인하세요.
Node.jsESMERR_REQUIRE_ESMCommonJSimport

관련 에러

관련 가이드

Node.js LTS 버전 | 운영은 24, 10월 28일부터 26도 LTS입니다동기 require, ESM, 노드 버전 | 패키지는 있는데 require만 막히면?ERR_PACKAGE_PATH_NOT_EXPORTED, 서브패스, exports | 패키지는 있는데 깊은 경로만 막히면?엣지 런타임, 노드 모듈 미지원, 미들웨어 | 배포 로그만 모듈을 거절하면?