[Node.js + Express] .env, 라우터 분리, 에러 핸들링, 미들웨어 구성

minjonyyy·2025년 8월 6일

Node.js + Express 백엔드 서버 고도화:

.env, 라우터 분리, 에러 핸들링, 미들웨어 구성

이전 글에서 Express 기반의 서버를 처음부터 구성해보았다면, 이번 글에서는 아래 네 가지를 다루려고 합니다.

  • .env 환경 변수 관리
  • 라우터 모듈 분리
  • 에러 핸들링 미들웨어 구성
  • 커스텀 미들웨어 작성

📁 1. 환경 변수 관리 (.env)

설치

npm install dotenv

.env 파일 생성

PORT=3000
NODE_ENV=development

index.js에서 적용

require('dotenv').config();

const port = process.env.PORT || 3000;

💡 .env 파일은 .gitignore에 반드시 추가하자.


🔀 2. 라우터 분리

폴더 구조

my-backend/
├── routes/
│   └── user.js
├── app.js
└── index.js

routes/user.js

const express = require('express');
const router = express.Router();

router.get('/profile', (req, res) => {
  res.json({ message: 'User profile' });
});

module.exports = router;

app.js

const express = require('express');
const app = express();
const userRouter = require('./routes/user');

app.use(express.json());
app.use('/user', userRouter);

module.exports = app;

🛠️ 3. 에러 핸들링 미들웨어

기본 구조

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 모듈 사용을 고려할 것


🧱 4. 커스텀 미들웨어 구성

요청 시간 로깅 미들웨어

const requestLogger = (req, res, next) => {
  console.log(`[${new Date().toISOString()}] ${req.method} ${req.url}`);
  next();
};

app.use(requestLogger);

✅ 공통 로직, 인증 처리, 요청 제한 등은 미들웨어로 추상화하면 유지보수가 쉬워진다.


📌 마무리

기능설명
.env환경 변수 설정 및 보안 강화
라우터 분리책임 분리, 확장성 향상
에러 핸들링안정적인 서비스 운영을 위한 필수 요소
커스텀 미들웨어공통 로직의 재사용 및 분리 가능

Velog by @minjonyyy

0개의 댓글