반응형
✅오늘 학습 Keyword
3계층 아키텍처 패턴에 ExpressJS Aasync Errors 에러핸들러 적용하긔
✅오늘 겪은 문제 및 해결
controller, service, repository 에서 다발적으로 발생하는 에러를 한 곳으로 넘겨서 가독성과 효율을 높이고 싶었다.
ExpressJS Async Errors
https://www.npmjs.com/package/express-async-errors
1.
npm install express-async-errors --save
2.
error handler middleware
module.exports = async (error, req, res, next) => {
//"404/어쩌구" 형태의 에러를 잡아오면 "/"기점으로 split 한 후
//각각 status, errorMessage값을 할당해줌
const [status, errorMessage] = error.message.split('/');
console.error(error);
//위에서 split한 번호와 에러메세지를 아래와 같이 출력한다.
return res.status(status).json({ errorMessage });
};
'express-async-errors'와 새로 만든 errorMiddleware를 app.js에 등록해준다.
//app.js
const express = require('express');
require('express-async-errors');
const app = express();
const port = 3000;
// const postsRouter = require('./routes/posts.routes');
const router = require('./routes');
const cookieParser = require('cookie-parser');
const errorMiddleware = require('./middlewares/error-middleware');
app.use(express.json()); //()
app.use(cookieParser());
app.use('/api', router);
app.use(errorMiddleware);
app.listen(port, () => {
console.log(port, '포트로 서버가 열렸어요!');
});
작동원리: errorMiddleware를 등록하면 모든 요청에 대해 먼저 errorMiddleware가 실행되며, 이 미들웨어는 'next'함수를 사용하여 다음 미들웨어로 요청을 전달한다. next에 에러 객체가 전달되면 next로 안빠지고 에러 핸들러 함수를 호출한다.
✅알게된 점 및 계획
전역에서 발생하는 error를 한군데에서 해결하는 기능과 작동원리를 파악, 구현했다.
각각의 계층에서 error를 발생시키는 것 보다 훨씬 깔끔하고 효율적이라고 느껴지지만 오히려 특정에러에 대한 구체적 파악이 어렵지 않을까 실험해볼 예정.
반응형
'필수 개발지식 > 개념정리, 유용한팁' 카테고리의 다른 글
백엔드 개발자(Backend Developer)란? (0) | 2023.05.09 |
---|---|
Joi, Javascript object schema validator (0) | 2023.05.05 |
sequelize 이용하여 db, table생성하기 (0) | 2023.04.22 |
MIDDLE WARE란? 개념 정리하고 가기! (0) | 2023.04.21 |
AWS EC2 연결하기! (0) | 2023.04.20 |