cra
로 이미 리액트 프로젝트 생성 완료- 서버 프로젝트 생성 완료
- 노드 서버/리액트 서버 따로 동작
-> 이 세 가지를 전제두고 글을 작성한다.
리액트_프로젝트/src
아래에 setupProxy.js
파일을 생성한다.npm install http-proxy-middleware
로 모듈을 설치한다.setupProxy.js
내용 작성
const {createProxyMiddleware} = require('http-proxy-middleware');
module.exports = (app) => {
app.use(
createProxyMiddleware('/api', {
target: 'http://localhost:5000/', // 노드 서버 주소
changeOrigin: true
})
)
}
여기까지 설정해주면 설정 완료!
+) cra
로 리액트 프로젝트를 생성한 경우, package.json
에 proxy: ~
를 설정해주는 방법도 있다.
Node.js로 아주 간단한 서버를 하나 만들어서 테스트를 해볼 수 있다.
1. 노드_프로젝트/index.js
파일을 하나 만든다.
2. npm install cors
로 모듈을 설치한다.
3. index.js
파일 내용 작성
// 노드_프로젝트/index.js
const express = require('express');
const app = express();
const cors = require('cors');
app.use(cors());
app.get('/api', async (req, res) => {
res.send('hello world');
})
app.listen(5000); // React가 3000번 포트를 사용하므로 다른 포트를 지정해주는게 좋다.
npm install axios
로 패키지를 설치한다.리액트_프로젝트/src/App.js
에 테스트 코드를 작성한다.// 리액트_프로젝트/src/App.js
import axios from "axios";
import {useEffect} from "react";
function App() {
const sendRequest = async() => {
const res = await axios.get('/api');
console.log(res.data);
};
useEffect(()=>{
sendRequest();
});
return (
<div className="App">
</div>
);
}
export default App;