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

관련 에러

관련 가이드

PostgreSQL 커넥션 풀 고갈로 서비스가 멈춘 새벽 3시 — PgBouncer 도입과 연결 관리 재설계 실전 기록Node.js 22 LTS 새 기능 총정리Node.js vs Bun vs Deno — 2026년 런타임 비교 실무 가이드OpenClaw v3.0 — 오픈소스 에이전틱 AI 프레임워크가 바꾸는 에이전트 개발