• 카테고리

    질문 & 답변
  • 세부 분야

    백엔드

  • 해결 여부

    해결됨

섹션13. 마이크로서비스> Error [ERR_REQUIRE_ESM]

23.08.22 19:20 작성 조회수 784

0

안녕하세요.

(2022년도 강의) 섹션13. Microservice - API-Gateway 2 강의에서 질문이 있습니다.

Microservice의 Graphql기반의 API 서버를 구성하는 예제에서

Gateway 서버에서 아래와 같은 에러가 발생합니다. (캡쳐 참고)

스크린샷, 2023-08-22 19-09-14.pngconst wrapAnsi = require('wrap-ansi');

Error [ERR_REQUIRE_ESM]: require() of ES Module /api-gateway/node_modules/wrap-ansi/index.js from /api-gateway/node_modules/@nestjs/cli/node_modules/inquirer/lib/utils/screen-manager.js not supported.

Node모듈에서 import 방식이 아닌 require 를 통해 다른 모듈을 로드해서 오류라는 것 같은데요.

이 경우, 어떻게 해야할까요? ㅠ

 

답변 2

·

답변을 작성해보세요.

0

안녕하세요! 민유님!

해당 에러는 버전과 관련이 있어요!
기존에 동일한 에러가 발생하셔서 해결된 답안을 링크로 보내드릴게요!

  1. string-width 라이브러리 버전문제:
    https://www.inflearn.com/questions/891805/15-02-api-gateway-2

  2. nestjs, node 버전문제:
    https://www.inflearn.com/questions/904549/15-02-gateway2-docker-compose-%EC%97%90%EB%9F%AC

 

해당 문제는 간단하지 않고, nestjs버전, node버전 등이 종합적으로 연결되어 있으므로 반드시 1번, 2번 순서대로 1개씩 해결해 주세요!

0

인프런 AI 인턴님의 프로필

인프런 AI 인턴

2023.08.24

안녕하세요, 인프런 AI 인턴이에요.
에러 메시지를 보니, ES 모듈을 불러오는 과정에서 오류가 발생한 것 같습니다. 현재 사용하고 있는 Node 버전이 ES 모듈을 인식하기 위해서는 특정 플래그를 추가해야 할 수도 있습니다.

해결 방법으로는 다음과 같은 두 가지 방법이 있을 수 있습니다.

첫 번째로, Node 버전을 최신 버전으로 업데이트하여 ES 모듈 로드를 지원하는 버전을 사용하는 것입니다.

두 번째로, .mjs 확장자를 가진 모듈을 사용할 때는 import 문을 사용해야 하며, .js 확장자를 가진 CommonJS 모듈을 사용할 때는 require 문을 사용해야 합니다. 따라서 해당 코드에서 import 문으로 모듈을 불러올 수 있는 방법이 있다면, import 문으로 변경해 보세요.

만약 위의 방법으로 문제가 해결되지 않는다면, 노드 버전을 확인하고 해당 버전에서 작동하는 호환성 있는 버전의 wrap-ansi 패키지를 설치해 보시는 것도 좋은 방법일 수 있습니다.
단, 패키지를 설치할 때는 package.json 파일이 있는 디렉토리에서 npm install 또는 yarn install 명령을 실행해 주세요.

이 방법들을 시도해 보시고, 여전히 해결되지 않는다면 해당 강의의 Q&A 게시판에 질문을 남겨보시는 것이 도움이 될 수 있습니다.
감사합니다.