diff --git a/src/middlewares/error.js b/src/middlewares/error.js index fcf42e6..ab40502 100644 --- a/src/middlewares/error.js +++ b/src/middlewares/error.js @@ -4,6 +4,7 @@ const config = require("../config/config"); const httpStatus = require("http-status"); const logger = require("../config/logger"); const multer = require("multer"); +const { AxiosError } = require("axios"); const errorConverter = (err, req, res, next) => { let error = err; @@ -15,6 +16,8 @@ const errorConverter = (err, req, res, next) => { // Handle Sequelize validation and unique constraint errors const messages = error.errors.map(e => e.message); error = new ApiError(httpStatus.BAD_REQUEST, messages.join(", "), error, false, err.stack); + } else if (error instanceof AxiosError) { + error = new ApiError(error.status, error.message, error.response.data, false, error.stack); } else if (!(error instanceof ApiError)) { // Handle other errors const statusCode = @@ -28,7 +31,7 @@ const errorConverter = (err, req, res, next) => { // eslint-disable-next-line no-unused-vars const errorHandler = (err, req, res, next) => { - let { statusCode, message } = err; + let { statusCode, message, errors } = err; if (config.env === 'production' && !err.isOperational) { statusCode = httpStatus.INTERNAL_SERVER_ERROR; message = httpStatus[httpStatus.INTERNAL_SERVER_ERROR]; @@ -39,6 +42,7 @@ const errorHandler = (err, req, res, next) => { const response = { code: statusCode, message, + ...(config.env === 'development' && { errors: errors }), ...(config.env === 'development' && { stack: err.stack }), };