6. Koa中的錯誤處理

1.  Koa中自帶的錯誤處理npm

  koa中,經過ctx.throw( 狀態碼 )來拋出異常, 也能夠攜帶本身想提示錯誤信息 json

//這裏咱們限制輸入的id不能爲負數,不然就拋出錯誤
usersRouter.get('/:id', (ctx) => {
  if(ctx.params.id * 1 < 0 ) {
    ctx.throw(404, '這個用戶過小了, 找不到')
  }
  ctx.body = db[ctx.params.id * 1]
})

  

 

           圖1  koa自帶錯誤處理結果app

  從上圖咱們能夠看出, 返回的狀態碼爲404, 錯誤處理信息也顯示了。可是這不是咱們想要的, 在Restful API的規定中, 咱們儘可能使用json格式返回信息koa

  因此咱們能夠本身寫一箇中間件, 放在執行順序的最前面, 來對後面執行的代碼進行錯誤處理async

//錯誤處理中間件
app.use(async (ctx, next) => {
  try {
    await next()
  } catch (error) {
    ctx.status = error.status || error.statusCode
    ctx.body = {
      message: error.message
    }
  }
})

 

 

   能夠看到, 錯誤信息就以Json的格式顯示出來了ui

 

2. 使用中間件koa-json-error來處理錯誤信息spa

 1. 安裝koa-json-errorcode

  npm i koa-json-error --save中間件

 2. 使用 blog

const error = require('koa-json-error')
app.use(error())

 

 

               圖2 用koa-json-errorr處理錯誤信息

    能夠看出, koa-json-error返回的結果都是json格式, 並且信息很是全。可是有個stack字段很是長, 在生產階段咱們是不須要返回的。因此, 咱們須要在

  生產環境下將它隱藏

相關文章
相關標籤/搜索