Dev/javascript
Express 5.0 및 5.1의 주요 변경 사항
괴발짜응
2025. 4. 3. 23:41
반응형
Express 5.0은 Node.js에서 가장 널리 사용되는 웹 프레임워크인 Express.js의 메이저 업데이트 버전이다. 기존 4.x 버전에 큰 변화 없이 꽤 오랜 시간 유지되었지만, Express 5.0에서는 몇 가지 중요한 변화가 포함되었다.
1. Promise 기반 미들웨어 지원
기존 Express 4에서는 next()를 직접 호출해야 했지만, Express 5에서는 async/await 방식의 Promise 기반 미들웨어를 기본 지원한다.
app.get('/example', async (req, res) => {
const data = await FetchData();
res.send(data);
});
예외 발생 시 try/catch 없이도 자동으로 에러 핸들러로 전달된다.
2. 라우터와 미들웨어에서 .next('route') 제거
next('router') 기능이 제거되고, return next()나 조건 분기로 처리해야 한다.
3. 내장 미들웨어 제거
기존 express.json(), express.urlencoded() 등의 내장 미들웨어가 여전히 사용 가능하지만, body-parser와 같은 별도 패키지 사용을 권장한다.
4. 라우터 메서드에서 res.jsonp() 및 res.send() 변경
res.send()와 res.json() 이 더 명확한 역할을 갖도록 정비되었고, res.jsonp()도 안정성이 향상 되었다.
5. 에러 핸들링 개선
비동기 미들웨어에서 발생하는 예외가 자동으로 에러 핸들러에 전달되므로 try/catch 없이도 안전하게 처리할 수 있다.
app.use((err, req, res, next) => {
console.error(err.stack);
res.status(500).send('Something broke!');
});
6. 라우터에서 app.route() 개선
라우터에서 체이닝 방식이 더 직관적으로 개선
app.route('/book')
.get((req, res) => res.send('Get a book'))
.post((req, res) => res.send('Add a book'));
마이그레이션 팁
- 기존 Express 4 코드는 대부분 Express 5에서도 호환된다.
- async / await 기반 코드를 쓴다면 에러 처리 방식만 확인하라.
- body-parser, cookie-parser 등은 별도로 설치하는 것이 안정적이다.
Express 5.1은 Express 5.0의 다음 마이너 릴리스이기 때문에 큰 구조적인 변화보다는 기능 추가, 개선 및 안정화헤 초점이 맞춰져 있다.
주요 변경 사항
- res.send()에서 Uint8Array 지원 추가 - 이제 res.send() 메서드를 사용하여 Uint8Array 인스턴스를 직접 응답으로 보낼 수 있다.
- res.sendFild()의 ETag 옵션 지원 - 파일 전송 시 ETag 생성을제어할 수 있는 옵션이 추가되어 캐싱 전략을 더욱 세밀하게 관할 수 있다.
- res.links()에서 동일한 rel 속성의 여러 링크 지원 - 이제 res.links() 메서드를 통해 동일 rel 값을 가진 여러 링크를 추가할 수 있어, 응답 헤더에 더 다양한 링크를 포함시킬 수 있따.
- 성능 개선 - acceptParams 처리에서 루프 사용으로 성능이 향상 되었다.
- 종속성 업데이트 - Node.js의 최신 기능을 활용하기 위해 오래된 버전에 대한 지원이 제거되었고 코드베이스가 간결해졌다.
장기 지원(LTS) 일정
Express 팀은 이번 릴리스를 통해 공식적인 장기 지원(LTS) 일정을 발표했다.
- 현재(CURRENT) - 새로운 주요 버전이 출시되면 최소 3개월 동안 현재 상태 유지
- 활성(ACTIVE) - 3개월 후, 안정성과 보안이 확인되면 npm의 latest 태그로 지정되며 최소 12개월 동안 활성 상태로 유지
- 유지보수(MAINTENANCE) - 새로운 주요 버전이 활성 상태가 되면 이전 버전은 12개월 동안 유지보수 상태로 전환
반응형