Node.js에서는 기본적으로 fetch()
가 지원되지 않는 환경이다.
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 포스트를 따로 정리하여 작성하였다.
npm install node-fetch
// package.json
{
"dependencies": {
"node-fetch": "^3.2.4"
},
"type": "module"
}
// 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)
}
}
잘못된 정보가 존재한다면 댓글 부탁드리겠습니다. :)
잘보고 갑니다! 감사합니다 : )