Koa 中的错误处理
Posted wayou
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Koa 中的错误处理相关的知识,希望对你有一定的参考价值。
不像 express 中在末尾处注册一个声明为 app.use(async (ctx, next) => {
try {
await next();
} catch (err) {
ctx.status = err.status || 500;
ctx.body = err.message;
ctx.app.emit("error", err, ctx);
}
}); 这样程序中任何报错都会收敛到此处。此时可以方便地将错误打印到页面,开发时非常便捷。 + ctx.app.emit(‘error‘, err, ctx); koa 也建议通过 app 来派发错误,然后通过监听 app 上的 app.on("error", (err, ctx) => {
/* 错误的集中处理:
* log 出来
* 写入日志
* 写入数据库
* ...
*/
}); 一个错误捕获并打印到页面的示例: const Koa = require("koa");
const app = new Koa();
app.use(async (ctx, next) => {
try {
await next();
} catch (err) {
const status = err.status || 500;
ctx.status = status;
ctx.type = "html";
ctx.body = `
<b>${status}</b> ${err}
`;
// emmit
ctx.app.emit("error", err, ctx);
}
});
app.use(ctx => {
const a = "hello";
a = "hello world!"; // TypeError: Assignment to constant variable.
ctx.body = a;
});
app.on("error", (err, ctx) => {
console.error("Ooops..
", err);
});
app.listen(3000); 通过
|
以上是关于Koa 中的错误处理的主要内容,如果未能解决你的问题,请参考以下文章
如何在前端 apollo-client 上处理来自 Node/Koa 的后端错误