-
typeorm 기본 구조 만들기 (2) - app, index 분리공부하기/node.js 2022. 1. 16. 01:26
기본 셋팅편에 이어서 app.ts 및 index.ts 셋팅에 관련된 게시글입니다.
예제 git : https://github.com/kboysm/typeorm_study
GitHub - kboysm/typeorm_study: typeorm 탐색 및 프로젝트에 사용할 수 있는지 여부 테스트
typeorm 탐색 및 프로젝트에 사용할 수 있는지 여부 테스트. Contribute to kboysm/typeorm_study development by creating an account on GitHub.
github.com
1. package.json에 사용될 모듈을 미리 불러옵니다.
npm i routing-controllers@0.9.0
npm i typedi@0.8.0
npm i cross-env
npm i nodemon
npm i ts-node@10.4.0
npm i typeorm-naming-strategies
npm i typeorm-typedi-extensions
npm i class-transformer
npm i class-validator2. app.ts 파일을 제작합니다. (경로 : src/app.ts)
import "reflect-metadata";
import express, { Application } from "express";
import { useContainer as ormContainer, createConnection } from "typeorm";
import bodyParser from "body-parser";
import { Container } from "typedi";
import { useContainer as routingContainer, useExpressServer, } from "routing-controllers";
// import { routingControllerOptions } from "./utils/RoutingConfig";
// import { useSwagger } from "./utils/swagger";
import path from "path";
export class App {
public app: express.Application;
constructor() {
this.app = express();
this.setDatabase();
this.setMiddlewares();
this.setEnv();
}
// DB 셋팅
private async setDatabase(): Promise<void> {
try {
await createConnection().then(async (connection) => {});
} catch (error) {
console.log(error);
}
}
// 미들웨어 셋팅
private setMiddlewares(): void {
this.app.use(bodyParser.json({ limit: "20mb" }));
this.app.use(bodyParser.urlencoded({ extended: false }));
}
// 환경변수가 지정되어 있다면 지정한 port로 express 서버 개방
private getHttpPort(): number {
const portExpression = process.env["HTTP_PORT"];
if (portExpression) {
return Number(portExpression);
}
return 4000;
}
// express 서버 스타트
public async createExpressServer(): Promise<void> {
try {
routingContainer(Container);
ormContainer(Container);
// useExpressServer(this.app, routingControllerOptions);
// useSwagger(this.app);
const port = this.getHttpPort();
this.app.listen(port, () => {
console.log(`Server Start, port: ${port}`);
});
} catch (error) {
console.log(error);
}
}
// NODE_ENV MODE에 따른 .env 파일 설정
public async setEnv(): Promise<void> {
if (process.env.NODE_ENV === "development") {
require("dotenv").config({
path: path.join(__dirname, "../.env.development"),
});
} else if (process.env.NODE_ENV === "production") {
require("dotenv").config({
path: path.join(__dirname, "../.env.production"),
});
}
}
}3. index.ts 셋팅
import { App } from "./app";
try {
const app = new App();
app.createExpressServer();
}
catch (err) {
console.log(err);
}4. package.json 명령어 설정
"scripts": {
"start": "cross-env NODE_ENV=production node dist/index.js",
"dev": "cross-env NODE_ENV=development nodemon --exec ts-node src/index.ts"
}5. ormconfig.js 파일의 synchronize : true 로 변경 후 npm run dev 명령 실행
6. 자동으로 생성된 테이블을 확인할 수 있습니다.'공부하기 > node.js' 카테고리의 다른 글
typeorm 기본 구조 만들기 (5) - swagger (0) 2022.01.24 typeorm 기본 구조 만들기 (4) - auth,jwt (0) 2022.01.24 typeorm 기본 구조 만들기 (3) - repository, service, controller (0) 2022.01.24 typeorm 기본 구조 만들기 (1) - typeorm 셋팅 (0) 2022.01.16 node.js 기본기 정리 (0) 2020.02.12