customs : 얼마 없는 js의 에러를 세분화 하여 에러를 관리할 폴더
errorHandler : 에러 관리
/**
* @file app/errors/errorHandler.js
* @description 에러 핸들러
* 251124 v1.0.0 CK init
*/
import { BaseError } from "sequelize";
import { DB_ERROR, SYSTEM_ERROR } from "../../configs/responseCode.config.js";
import { createBaseResponse } from "../utils/createBaseResponse.util.js";
/**
* 에러 핸들러
* 모든 에러는 `codeInfo` 프로퍼티를 포함하고 있을 것
* 파라미터로 전달받은 에러 객체에 `codeInfo`가 없을 경우, DB에러 or 시스템에러로 설정
* 이때, `codeInfo`는 import("responseCode.config.type.js").responseCodeConfig 참조
* @param {Error} err
* @param {import("express").Request} req
* @param {import("express").Response} res
* @param {import("express").NextFunction} next
* @returns
*/
export default function errorHandler(err, req, res, next) {
// Sequelize 에러 처리
if(err instanceof BaseError) {
err.codeInfo = DB_ERROR; //
}
// 예기치 못한 에러 발생 처리
if(!err.codeInfo) {
err.codeInfo = SYSTEM_ERROR;
}
// 시스템 에러 및 DB에러 일 경우, 로그 출력
// TODO: 나중에 추가
// 개발 모드일 경우 콘솔로 에러 로그 출력
if(process.env.APP_MODE === 'dev') {
console.log(err.stack);
}
return res.status(err.codeInfo.status).send(createBaseResponse(err.codeInfo));
}