require("dotenv").config()
const express = require("express");
const cors = require("cors");
const morgan = require("morgan");
const {appDataSource} = require("./models/dataSource")
const routes = require("./routes");
const app = express();
app.use(cors());
app.use(morgan("dev"));
app.use(express.json());
app.use(routes);
app.get("/ping", (req, res) => {
res.json({ message: "pong" });
});
const PORT = process.env.PORT;
app.listen(PORT, () => {
appDataSource
.initialize()
.then(() => {
console.log("Data Source has been initialized!");
})
.catch((err) => {
console.error("Error occurred during server startup", err);
appDataSource.destroy();
});
console.log(`Server is listening on ${PORT}`);
});
require("dotenv").config()
= dotenv 패키지를 사용하여 '.env' 파일에서 환경 변수를 로드한다.
여기서 require("dotenv").config() 내용은
제일 위에 올려주는것이 좋다.
const express = require("express");
= express: Express.js 웹 프레임워크를 사용하기 위해 가져온다.
const cors = require("cors");
= cors: CORS(Cross-Origin Resource Sharing)
미들웨어를 사용하기 위해 가져온다.
const morgan = require("morgan");
= morgan: HTTP 요청 로깅을 위해 가져온다.
const {appDataSource} = require("./models/dataSource")
= appDataSource: 데이터 소스를 가져온다.
('./models/dataSource.js' 파일에서 내보내진 것으로 가정한다)
const routes = require("./routes");
= routes: 라우팅을 정의한 모듈을 가져온다.
('./rotes.js'파일에서 내보내진 것으로 가정한다)
const app = express();
=Express 애플리케이션을 생성한다.
app.use(cors());
=cors():모든 결로에 대해 CORS를 활성화 한다.
app.use(morgan("dev"));
=morgan("dev"): 개발 환경에서 HTTP 요청을 로깅 한다.
app.use(express.json());
=express.json(): JSON 형식의 요청 본문을 파싱 한다.
app.use(routes);
=routes: 정의한 라우팅을 사용한다.
app.get("/ping", (req, res) => {
res.json({ message: "pong" });
});
= '/ping' 엔드포인트에 GET 요청에 대한 핸들러를 등록한다
해당 엔드포인트로 요청이 오면 "pong" 메시지를 JSON 형태로 응답한다.
const PORT = process.env.PORT;
=환경 변수로 설정된 포트 번호를 사용하여 서버를 시작한다.
app.listen(PORT, () => {
= app.listen(PORT, () => {...}
Express 애플리케이션을 시작하는 부분이다.
'app.listen'메서드는 지정된 포트 번호('PORT')로
HTTP 서버를 시작한다. 서버가 시작되면 콜백 함수가 실행된다.
appDataSource
.initialize()
=appDataSource.initialize(): 데이터 소스의 초기화를 시작한다.
.then(() => {
console.log("Data Source has been initialized!");
})
=.then(() => {...})
'appDataSource.initialize()'의 프로미스가
성공적으로 해결될 경우 실행된다. 데이터 소스의 초기화가 완료되면
"Data Source has been initialized!"메시지가 콘솔에 출력된다.
.catch((err) => {
console.error("Error occurred during server startup", err);
appDataSource.destroy();
});
=.catch((err) => {...} :
'appDataSource.initialize()'의 프로미스가 거부될 경우 실행된다.
데이터 소스 초기화 중에 오류가 발생한 경우
해당 오류와 함께 "Error occurred during sever startup"
메시지가 콘솔에 출력된다. 그리고 'appDataSource.destroy()'를
호출하여 데이터 소스를 파괴한다.
console.log(`Server is listening on ${PORT}`);
});
= 서버가 지정된 포트 번호로 정상적으로 시작된 경우,
해당 포트 번호를 사용하여 "Server is listening on [포트번호]
메시지를 콘솔에 출력한다.