/
├── /server
│ ├── /public # React앱을 빌드한 파일
│ ├── index.js # node.js로 작성된 웹 서버 진입점
│ ├── ... # 기타 여러분들이 필요에 따라 만드는 파일들
│ └── package.json
│
├── /client
│ ├── README.md # create-react-app이 만들어낸 파일
│ ├── /build # React앱을 빌드한 파일
│ ├── /public # create-react-app이 만들어낸 파일, yarn start로 실행할 시에 쓰입니다
│ └── /src # React 컴포넌트가 들어가는 폴더
│ ├── App.js
│ ├── App.css
│ ├── index.js
│ ├── index.css
│ ├── ...
│ └── package.json
│
└.gitignore # gitignore를 이용해서 node_modules가 repository에 포함되지 않도록 하세요
$ npx create-react-app . or 폴더명
$ npm install --save react-router-dom
클라이언트 빌드 → 배포 를 진행하기 위해 해주는 작업
npm run build
환경세팅
npm init -y
npm install --save express
// 기본 연결 테스트 : http://localhost:3000/
const express = require("express");
const cors = require("cors");
const bodyParser = require("body-parser");
const path = require("path");
const app = express();
const port = 3000;
app.use(cors());
app.use(bodyParser.json());
app.get("/", (req, res) => {
console.log(`${req.method}\t ${req.url}`);
res.status(200).send("HI!");
});
const server = app.listen(3000, () => {
console.log(`chatterbox-serer listen on ${port}`);
});
module.exports = server;
연결은 잘 되지만, 확인용 콘솔로그가 왜 안 찍힐까??
root에서는 잘 연결되었지만, 기타 라우팅 주소는 연결이 되지 않았던 상태였다. 이를 해결하기 위해서는 아래와 같은 방법을 써야한다.
#관련내용
// '*'는 '/' 이후 들어오는 모든 주소에 대한 get 요청을 허용한다.
app.get('/*', function (req, res) {
res.sendFile(path.join(__dirname, 'public', 'index.html'));
});
서버를 라우팅한 후, 동일한 주소의 클라이언트 라우팅에 맞춰 렌더링 = 동기화 작업
이 말은 클라이언트 주소처럼 '로컬/about' 하면 about 페이지가 뜨게 만들어줘야하는 것이다. 만약 설정해주지 않으면 cannot get /about 이라고 화면에 뜬다.
체크포인트를 보고 그대로 적용했으나 route로 별도 분기를 실행했을 때 ReferenceError: path is not defined
란 오류가 떴다. 구글링을 하니 path 를 route에도 써줬으니 const path = require("path");
로 해줘야 해결되는 부분이었다. 참조
사용자가 이메일 제출(POST) 시, 이력서 파일을 서버로부터 전송되게 하기 : HTTP 응답의 content-type 이 이력서 파일 형식에 맞아야 한다. (ex:application/pdf)
추가적으로 참고하거나 볼만한 사이트