Error [ERR_REQUIRE_ESM]: require() of ES Module 해결
본문 바로가기

Network&etc/vscode&package.json

Error [ERR_REQUIRE_ESM]: require() of ES Module 해결

Error [ERR_REQUIRE_ESM]: require() of ES Module /Users/yujin/caveduck/caveduck/proj.www/node_modules/json-with-bigint/json-with-bigint.js from /Users/.../node_modules/@qdrant/openapi-typescript-fetch/dist/cjs/fetcher.js not supported.
Instead change the require of json-with-bigint.js in /Users/.../node_modules/@qdrant/openapi-typescript-fetch/dist/cjs/fetcher.js to a dynamic import() which is available in all CommonJS modules.

 

이와 같은 에러를 만났다. 평소처럼 npm i 를 하거나 관련 라이브러리를 재설치해보았으나 소용이 없었다.

 

ESM이란?

ESM은 ECMAScript module(ES Module)로 import 및 export키워드를 사용하여 코드를 모듈화하고, 다른 모듈에서 필요한 코드를 가져오는 기능을 제공한다. 그렇기때문에 기존 json-with-bigint.js를 사용하려면

 

1. requied대신에 import로 전부다 바꾼다?

nodejs 환경에서 commonJS 모듈을 사용하고있기때문에 싹다바꿔야하는거라 말이되지않았다.

 

2. 해당 라이브러리관련 코드를 전부 제거한다?

다행히 사수분이 해결해줘서 해당내용을 기록한다.

 

 

문제의 코드를 package-lock.json 에서 찾을 수 있었다. 버전문제일 확률이 높다.

@qdrant/openapi-typescript-fetch 라이브러리의 json-with-bigint dependencies 문제라서 관련 깃페이지로 이동하였다.

 

해당 라이브러리가 최근에 1.2.1 -> 1.2.2로 버전을 변경한것을 확인하였다.

현재 프로젝트에서는 기존 1.2.1을 사용하고있었기때문에 관련문제가 발생한듯하다.

 

package.json

해당라이브러리만 기존 버전으로 override하고 npm install 한다.

  "overrides": {
    "@qdrant/js-client-rest": {
      "@qdrant/openapi-typescript-fetch": "1.2.1"
    }
  }

 

 

해당 이슈가 사라진것을 확인하였다.

반응형