3. Node 가계부 만들기 [ 데이터 / Error 전송 포맷 설정 함수 생성, http-errors 사용, Error 핸들러 ]

2022. 5. 23. 12:47프로젝트/가계부 - 제작 JavaScript

* 에러코드 생성를 직접 만들어서 사용하기도 하지만 간편한 http-errors 라이브러리가 있다.

http-errors에서 기본 제공되는 error message 를 사용 할 예정이다. *

 

1. 데이터 / Error 전송 포맷 설정 함수 생성

1-1. lib/lib.js 생성

폴더 구조

 

 

1-2. lib/lib.js 코드 작성

//에러
const Error = (err, req, res, next) => {
  res.status(err.statusCode).json({
    code: err.statusCode,
    result: false,
    msg: err.message,
    data: ''
  })
}

//전송 포멧
const Send = (res, data) => {
  res.status(200).json({
    code: 200,
    result: true,
    msg: '',
    data
  })
}

module.exports = { Error, Send }

 

2. Error 핸들러 생성

2-1.  Express 내부에서 발생하는 404 에러처리

 

방법

요청을 잘못 된 경로로 시도 할 때  내부 404에러를 에러 형식을 맞춰 다시 에러처리 한다.

app.use(() => {
  throw httpError(404)
})

 

2-2. 에러 처리는 미들웨어에서 가장 밑에서 최종으로 처리 한다.

방법 

lib/lib.js에서 만든 Error 함수를 사용한다.

const { Error } = require('./lib/lib')
app.use(Error)

 

2-3. 결과 app.js

const express = require('express')
const logger = require('morgan')
const compression = require('compression')
const httpError = require('http-errors')

const { Error } = require('./lib/lib')
const { sequelize } = require('./models/index')

if (process.env.NODE_ENV === 'local') {
  sequelize
    .sync()
    .then(() => {
      console.log('성공')
    })
    .catch((err) => {
      console.log('실패')
      console.log(err)
    })
}

const app = express()

app.use(compression())
app.use(logger('dev'))
app.use(express.json())

app.use(() => {
  throw httpError(404)
})

app.use(Error)

app.listen(3000, () => {
  console.log('server start!')
})

 

728x90
반응형