이전 글에서 Express 기반의 서버를 처음부터 구성해보았다면, 이번 글에서는 아래 네 가지를 다루려고 합니다.
.env 환경 변수 관리npm install dotenv
.env 파일 생성PORT=3000
NODE_ENV=development
index.js에서 적용require('dotenv').config();
const port = process.env.PORT || 3000;
💡
.env파일은.gitignore에 반드시 추가하자.
my-backend/
├── routes/
│ └── user.js
├── app.js
└── index.js
routes/user.jsconst express = require('express');
const router = express.Router();
router.get('/profile', (req, res) => {
res.json({ message: 'User profile' });
});
module.exports = router;
app.jsconst express = require('express');
const app = express();
const userRouter = require('./routes/user');
app.use(express.json());
app.use('/user', userRouter);
module.exports = app;
app.use((err, req, res, next) => {
console.error(err.stack);
res.status(500).json({ error: 'Internal Server Error' });
});
router.get('/error', (req, res) => {
throw new Error('Test Error');
});
⚠️ 비동기 핸들링에는
express-async-errors모듈 사용을 고려할 것
const requestLogger = (req, res, next) => {
console.log(`[${new Date().toISOString()}] ${req.method} ${req.url}`);
next();
};
app.use(requestLogger);
✅ 공통 로직, 인증 처리, 요청 제한 등은 미들웨어로 추상화하면 유지보수가 쉬워진다.
| 기능 | 설명 |
|---|---|
| .env | 환경 변수 설정 및 보안 강화 |
| 라우터 분리 | 책임 분리, 확장성 향상 |
| 에러 핸들링 | 안정적인 서비스 운영을 위한 필수 요소 |
| 커스텀 미들웨어 | 공통 로직의 재사용 및 분리 가능 |
Velog by @minjonyyy