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