1. 중앙집중식 에러처리
- 각 라우터에서 try...catch를 반복하는 대신에, 에러처리 미들웨어를 만들어서 모든 에러를 한 곳에서 관리할 수 있다.
- 이렇게 하면 절대적인 코드 수가 줄기도 하고, 에러처리를 한 군데에서 하니 코드가 깔끔해진다.
- 에러에 대한 응답처리를 일관적으로 할 수 있다.
const express = require('express');
const app = express();
app.get('/error', (req, res, next)=>{
const err = new Error('뭔가 잘못되었음');
err.status = 500;
next(err); // next()에 인자를 전달하면 에러처리 미들웨어로 바로 이동한다.
});
// 중앙 에러처리 미들웨어
const errorHandler = (err, req, res, next) => {
console.error(err.stack); // 에러 로그 출력
const status = err.status || 500;
res.status(status).json({
message : err.message || '서버 내부 오류가 발생했습니다',
});
}
app.use(errorHandler); // 가장 마지막에 등록
app.listen(3000);
2. 환경변수 관리 (dotenv)
- 먼저 패키지 설치 npm install dotenv
- 프로젝트 최상단에 .env 파일 생성
# .env 파일
PORT=4000
DB_HOST=localhost
DB_USER=myuser
DB_PASS=mypassword
- 다음으로 어플리케이션 시작 부분에서 dotenv 설정
// app.js 상단
require('dotenv').config();
const express = require('express');
const app = express();
const port = process.env.PORT || 3000; // .env 파일의 값을 사용, 없으면 3000
app.get('/', (req, res) => {
// process.env.DB_HOST 와 같이 다른 환경변수도 사용 가능
res.send('환경 변수 설정 완료!');
});
app.listen(port, () => {
console.log(`${port}번 포트에서 서버 실행 중`);
});