[Node.js] fetch 사용하기

YeongMin·2022년 5월 4일
5

오류해결

목록 보기
1/1
post-thumbnail

fetch 사용하기

Node.js에서는 기본적으로 fetch()가 지원되지 않는 환경이다.

왜(why)?

Node.js에서는 fetch를 지원하지 않는가?
필자는 궁금해서 구글링을 통해 MDN을 들어가 보았다.

fetch는 웹 API카테고리에 속해있다. 즉 웹 브라우저에서 지원하는 API 이기 때문에 웹브라우저 환경이 아닌 바깥에서 동작하는 Node.js의 경우에는 해당 API를 지원하지 않는 것이었다.

자 그래서 어떻게 fetch를 Node.js에서 사용을 할까?

필자가 해결한 방법은 node-fetch 패키지를 npm 패키지매니저로 install 하고 코드 최상단에서 import 하여 해결하였다.

그러나 기본값인 상태라면 이 경우에도 error가 발생할 것이다.
Cannot use import statement outside a module

이는 require 가 아닌 import 를 사용하여 모듈을 가져오려고 했기 때문이다.
해결 방법은 CommonJS vs ES Modules 포스트를 따로 정리하여 작성하였다.

정리

  • node fetch 패키지를 설치
npm install node-fetch

code

  • package.json에 type 옵션을 추가
// package.json
{
  	"dependencies": {
      "node-fetch": "^3.2.4"
    },
    "type": "module"
}
  • 사용할 파일에서 fetch 모듈을 가져와 사용
// foo.js
import fetch from 'node-fetch'

async function request(url) {
  const response = await fetch(url);
  const data = await response.json();
  return data
}

async function foo() {
  const url = "URL";
  try {
    const dataList = await request(url);
  } catch(err) {
    console.error(err)
  }
}

잘못된 정보가 존재한다면 댓글 부탁드리겠습니다. :)

profile
Front-End 안영민

1개의 댓글

comment-user-thumbnail
2022년 11월 24일

잘보고 갑니다! 감사합니다 : )

답글 달기