반응형
환경 세팅하기
1) 폴더 생성하기 & 폴더로 이동
2) yarn init
3) yarn add express cors ~~body-parser~~ sequelize typescript
- cors
- Express의 미들 웨어
- 헤더를 변경해주어 cors를 허용하는 방법이 있음 (하지만 CORS 미들웨어를 사용하는 것이 더 간단하고 편함)
- app.all('/*', function(req, res, next) { res.header("Access-Control-Allow-Origin", "*"); res.header("Access-Control-Allow-Headers", "X-Requested-With"); next(); });
- CORS 설정하기
- const cors = require('cors'); app.use(cors()); // CORS 설정
- https://beagle-dev.tistory.com/194
- body-parser
- 클라이언트 POST request data의 body로부터 파라미터를 편리하게 추출함
- (+) req.body는 body-parser를 사용하지 않으면 디폴트 값으로 undefined임
- 사용하려면, 상단에app.use(bodyParser().json()) 를 작성하면 된다.
- https://medium.com/@chullino/1분-패키지-소개-body-parser를-소개합니다-하지만-body-parser를-쓰지-마세요-bc3cbe0b2fd
- → 하지만, Express를 쓰면 간단하게 app.use(express.json()) 으로 간단하게 구현할 수 있다. 따라서 Express를 쓰는 경우에는 body-parser 모듈을 설치할 필요가 없음!
- sequelize
- Node.js의 대표적인 ORM. 자바스크립트 구문을 알아서 SQL로 변환해주는 모듈임.
- 다른 데이터베이스 전환시에도 유용하게 사용 가능
- MySQL, PostgreSQL, MariaDB 등 많은 RDBMS를 지원하고 프로미스 기반으로 구현되어 있기 때문에 비동기 로직을 편하게 작성할 수 있음
- https://velog.io/@alsrb5606/Node.js-Sequelize-정리
4) yarn add -D @types/express @types/node nodemon ts-node tslint
- ts-node
- Node.js에서 TypeScript를 실행시키는 도구
- ts 파일을 미리 컴파일하지 않고 바로 실행시키는 엔진 (따라서 dev에서 필요)
- JIT(Just In Time)으로 TypeScript를 JavaScript로 변환하여 실행 가능
- tslint : typescript 코드를 가독성 및 오류를 미리 검사하는 정적 분석 도구
5) nodemon 명령어 설정하기
"scripts": {
"dev": "nodemon --watch 'src/**/*.ts' --exec ts-node src/app.ts",
"start": "node dist/app.js",
"build": "tsc",
},
- yarn build : ts → js
package.json
{
"name": "nodejs",
"version": "1.0.0",
"main": "index.js",
"author": "nno3onn",
"license": "MIT",
"scripts": {
"dev": "nodemon --watch 'src/**/*.ts' --exec ts-node src/app.ts",
"start": "node dist/app.js",
"build": "tsc",
"build:clean": "yarn clean:pack && yarn clean && yarn build",
"clean": "rm -rf build",
"clean:pack": "rm -f *.tgz",
"lint": "tslint -p .",
"package": "yarn build:clean && npm pack"
},
"dependencies": {
"body-parser": "^1.20.2",
"cors": "^2.8.5",
"express": "^4.18.2",
"mysql2": "^3.3.2",
"sequelize": "^6.31.1",
"typescript": "^5.0.4"
},
"devDependencies": {
"@types/express": "^4.17.17",
"@types/node": "^20.2.4",
"nodemon": "^2.0.22",
"ts-node": "^10.9.1",
"tslint": "^6.1.3"
}
}
6) tsconfig.json 생성하고 입력하기
{
"compilerOptions": {
"target": "es2017",
"module": "commonjs",
"outDir": "./dist",
"rootDir": "./src",
"paths": {
"@/*": ["src/*"]
},
"strictNullChecks": true,
"esModuleInterop": true,
"baseUrl": "."
},
"ts-node": {
"esm": true
},
"exclude": ["node_modules"],
"include": ["./src/**/*.ts"]
}
- outDir : ts → js 바꿔서 저장할 디렉터리
- rootDir : ts파일들이 있는 루트 디렉터리
- paths : 절대 경로 설정. ts-config-paths 모듈을 사용하면 절대경로로 임포트할 수 있음
- ts-node
- esm (ECMAScript Module)
- ES6부터 자바스크립트 모듈 기능 추가됨
- ECMAScript에서 지원하는 자바스크립트 공식 모듈 시스템
- esm (ECMAScript Module)
API 테스트
app.ts
import * as express from "express";
const app = express();
const port = 3000;
app.listen(port, () => {
console.log("서버가 실행됩니다.");
});
app.get("/customer", (req: express.Request, res: express.Response) => {
res.send("get");
});
app.post("/customer", (req: express.Request, res: express.Response) => {
res.send("post");
});
app.all("/customer", (req: express.Request, res: express.Response) => {
res.send("all");
});
yarn build 를 입력하면 dist 폴더 속에 js 파일들이 생성되고,
yarn start를 입력하면 서버가 실행된다.
localhost:3000/customer 접속 시 ‘get’이 뜬다.
반응형
'Back-End' 카테고리의 다른 글
Express.js에서 에러 처리하기 (0) | 2023.07.25 |
---|---|
[Node.js] 라우트 처리하기 (0) | 2023.07.25 |
[Nest.js] NestJS가 뭐야?: NodeJS 프레임워크 공부하기 (0) | 2022.03.08 |
redis란? (0) | 2022.03.08 |
logger (0) | 2022.03.07 |