JavaScript를 사용하여 Express.js에서 사용자 지정 오류 처리기 미들웨어를 작성하는 방법 👩‍💻

오류 처리기란?



오류 처리기는 런타임 문제를 식별하고 처리하는 역할을 합니다.
Express.js는 기본적으로 오류 처리기가 내장되어 미리 구성되어 있습니다.

ExpressJS의 오류 처리기🚀



서버 오류가 발생할 때마다 Express.js는 이를 감지하고 사용자 지정 오류 처리기가 없는 경우 내장된 오류 처리기를 사용하여 오류 메시지와 함께 클라이언트에 응답을 보냅니다. Express.JS는 오류를 적절하게 처리할 뿐만 아니라 응용 프로그램이 다시 시작될 때 사용하지 않는 리소스를 올바르게 비우고자 합니다.

JavaScript를 사용하여 Express.js에서 사용자 지정 오류 처리기 미들웨어를 작성하는 방법🚀


1. 커스텀 ErrorHandler 미들웨어 생성





// ErrorHandler.js
const ErrorHandler = (err, req, res, next) => {
    console.log("Middleware Error Hadnling");
    const errStatus = err.statusCode || 500;
    const errMsg = err.message || 'Something went wrong';
    res.status(errStatus).json({
        success: false,
        status: errStatus,
        message: errMsg,
        stack: process.env.NODE_ENV === 'development' ? err.stack : {}
    })
}

export default ErrorHandler


참고: _err.stack는 오류가 발생한 정확한 파일 및 줄 번호를 표시합니다. 이는 코드를 디버그하기 위해 개발 모드에서만 필요합니다. 프로젝트 구조가 프로덕션 환경에 노출되면 위험해집니다_

2. 사용할 마지막 미들웨어로 사용자 지정 오류 처리기를 연결합니다.




// index.js (Server Entery File)
import { AuthRoute, CategoryRoute, HomeRoute, PostRoute, UserRoute } from "./routes/index.routes.js";

import ErrorHandler from "./middlewares/ErrorHandler.js";


// init app
const app = express();


// MIDDLEWARES
app.use("/", HomeRoute);
app.use("/user", verifyAccessToken, UserRoute);
app.use("/categories", CategoryRoute);
app.use("/posts", PostRoute)
app.use("/auth", AuthRoute);

// ERROR HANDLER MIDDLEWARE (Last middleware to use)
app.use(ErrorHandler)



3. ErrorHandler 호출 방법



ErrorHandler를 호출하려면 Express에서 next()를 사용하십시오.
다음 기능은 호출될 때 현재 미들웨어를 계승하는 미들웨어를 실행하는 Express 라우터의 기능입니다.

app.use("/books", (req, res, next) => {
  try{
      // code block to be executed
  }catch(err){
    next(err);
  }
})


생산 시 샘플 오류 응답





개발 중인 샘플 오류 응답✔





내장 ErrorHandler를 사용하는 대신 사용자 지정 ErrorHandler를 만들어야 하는 이유👀



여러 가지 이유로 사용자 지정 오류 처리기를 만들 수 있습니다.
예를 들어 일부 프로젝트는 프로덕션 단계에서 NODE_ENV를 "프로덕션"으로 설정하지 않습니다. 오류가 올바르게 처리되지 않으면 서버에 대한 민감한 정보가 노출될 수 있습니다.
다른 프로젝트에서는 다른 지점에서 다른 오류 개체 형식을 보내야 합니다.

개발자로서 오류가 발생할 때마다 앱이 손상되지 않도록 모든 오류를 올바르게 처리하는 것이 매우 중요합니다.

여기 벤틸🚀
내 콘텐츠가 마음에 들면 여기에서 작업을 계속할 수 있도록 지원할 수 있습니다.👇



아래 의견 상자에 질문이나 제안 사항을 알려주십시오.

좋은 웹페이지 즐겨찾기