0
:Nodejs - スローされたエラーをキャッチしてフォーマットする方法私はかなり私は深い例えば私のルート、内部のどこかに投げるエラーをキャッチする方法を理解していない
// put
router.put('/', async (ctx, next) => {
let body = ctx.request.body || {}
if (body._id === undefined) {
// Throw the error.
ctx.throw(400, '_id is required.')
}
})
_idが提供されていないときに私が取得します:
_id is required.
しかし、私はドンプレーンテキストのように投げてください。私は、例えば、トップレベルでそれをキャッチし、それをフォーマット希望:
{
status: 400.
message: '_id is required.'
}
docによると:
app.use(async (ctx, next) => {
try {
await next()
} catch (err) {
ctx.status = err.status || 500
console.log(ctx.status)
ctx.body = err.message
ctx.app.emit('error', err, ctx)
}
})
しかし、たとえそれが私のミドルウェアでキャッチを試みるせず、私はまだ取得します_id is required.
感謝を。 'ctx.throw(400、 '_idは必須です。')'は私のものです。私は別の場所で何か間違ったことをしたかもしれない! – laukok
私の答えが役に立つとうれしいことですが、問題はデフォルトのエラーハンドラであり、オブジェクト '{status、message}'ではなく 'ctx.body'に文字列を割り当てました。 – alexmac
良いキャッチ!ありがとうございました :-) – laukok