如何解决如何在用户定义的所有路由之后在NodeJS中添加错误处理程序?
我正在编写一个库,要求用户处理我的库所产生的错误。现在,我的方法是告诉用户在所有路由之后添加一个错误处理程序,如下所示:
const app = express();
app.use(MyLibrary.init())
// <user's routes here>
app.use(MyLibrary.errorHandler())
app.use((err,req,res,next) => {
// user's generic error handler
})
我的lib中的init
函数如下:
function init() {
return async (request,response,next) => {
try {
// some logic here that modifies the request object and can throw an error
return next(); // this can also throw an error,or generate an unhandled rejection / error
} catch (err) {
next(err);
}
};
}
errorHandler
函数如下:
function errorHandler() {
return async (err,request,next) => {
try {
if (/*err from MyLibrary*/) {
// do something and send a response
return;
}
next(err);
} catch (err) {
next(err);
}
};
}
我的目标是做到这一点,以便用户无需添加app.use(MyLibrary.errorHandler())
。
想到的一个解决方案是,在init
函数中,可以直接处理库的错误,而不必调用next(err)
。但是,MyLibrary
的错误也可能在用户编写的任何API处理程序中生成(因为它们可以通过修改后的request
对象与我的库进行交互)。这些API处理程序可能是async
。
这个问题有解决方案吗?
谢谢
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。