본문 바로가기
IT기술(코딩)/nodejs

nodejs에서 fetch 사용방법 fetch is not a function $.ajax 사용불가

by 크리에이트매이커 2024. 1. 4.
반응형

안녕하세요 여러분

크리에이트 메이커 입니다 ~~~

 

작업을 하던중, nodejs에서 스케줄링을 통해 DB접속 후 메일발송하는 기능을 만들고 있었는데요.

 

보통 fetch는 js파일에서 기본적으로 사용되지만,

서버를 관리하는 js파일에서는 기본적으로 사용이 안되더라구요.

 

처음에는 $.ajax로 메일을 보내려고 했는데 이역시 도저히 되질 않아,

await fetch로 바꾸었답니다.

 

근데 역시 몇번 실패를 하고 나서 원인을 찾으니,,,

 

서버관리하는 js파일에서 http통신을 하면 상대측에서 이 데이터를 웹에서 보낸것이 아니라고 판단을 하여

오류를 내보냅니다.

 

보통우리는 웹에서 함수를 사용해서 보내기 떄문에 잘 넘어갔었는데,

서버관리용 js파일에서는 바로 적용이 안되더군요.

그래서 방법을 찾았습니다.

 

먼저 

npm install node-fetch@2

를 설치합니다. 이때 npm install node-fetch 이게 아니라 npm install node-fetch@2 를 설치하셔야 합니다.

 

그리고 const fetch = require("node-fetch")를 선언해주고,

평소 웹에서 사용하던 식으로 

const response = await fetch('https://', {
    method: 'POST',
    headers: {
      'origin': 'http://localhost',
      'Content-type': 'application/json'
    }, body: JSON.stringify(param)
  }).then((httpResponse) => {
    if (httpResponse.ok) {
      console.log('Your mail is sent!');
    } else {
      return httpResponse.text()
        .then(text => Promise.reject(text));
    }
  })
    .catch((error) => {
      console.log('Oops... ' + error);
    });

이렇게 사용해 주시면 됩니다.

아 그리고 

반드시 헤더에 

 'origin': 'http://localhost',

를 추가해 주세용~

 

그럼 즐거운 개발!! 수고 !

 

외주 문의 

https://createmakerinc.com/createmakerconsult 

로 문의 주세용

반응형