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字段很是長, 在生產階段咱們是不須要返回的。因此, 咱們須要在
生產環境下將它隱藏