質問の背景は次のとおりです。私はKoa 2を使用してキックオフ コアをフォローしています。しかし、キックオフの演習は Koa 1 用に設計されています。Koa 2 のこの問題に対して問題を作成しました: Koa 2のエラー ハンドラのタスクはパスできません。
要するに、私の問題は、500 エラーが発生したときにカスタム エラー ページを表示する方法です。
コードは次のとおりです。
// error handler middleware
function errorHandler(ctx, next) {
try {
return next();
}
catch(err) {
ctx.status = err.status || 500;
// I would like to display the custom message as follows
ctx.body = 'Oops! internal server error';
// with emitting the error event, don't work
// ctx.app.emit('error', err, ctx);
}
}
// to generate error
app.use(router.get('/error', ctx => {
ctx.throw('oops', 500);
}));
しかし、私のエラーページは常に「内部サーバーエラー」として表示されます。これはデフォルトのメッセージです。ctx.body = 'Oops! internal server error';
ページを変更できなかったようです。
助けてくれてありがとう!