Error handling 当调试模式为false时,如何在强错误处理程序中设置自定义错误
我正在使用loopbackv3.x和强大的错误处理程序来处理我的项目错误。在开发模式下,错误响应很好,但在生产模式下,它会向客户端抛出不同的错误 我意识到是debug:false使它抛出了一个{error:{statusCode:500,message:'internalserver error'}}}基于关于 但是,当我使用debug:false抛出新的错误“error Messages”时,我想在生产中显示我的错误,以避免暴露敏感数据,如文件路径、URL和堆栈跟踪 以下是我的配置文件: config.json middleware.development.json middleware.json 我希望响应显示我抛出的错误,如下所示: 相反,现在它收到了:Error handling 当调试模式为false时,如何在强错误处理程序中设置自定义错误,error-handling,middleware,strongloop,loopback,Error Handling,Middleware,Strongloop,Loopback,我正在使用loopbackv3.x和强大的错误处理程序来处理我的项目错误。在开发模式下,错误响应很好,但在生产模式下,它会向客户端抛出不同的错误 我意识到是debug:false使它抛出了一个{error:{statusCode:500,message:'internalserver error'}}}基于关于 但是,当我使用debug:false抛出新的错误“error Messages”时,我想在生产中显示我的错误,以避免暴露敏感数据,如文件路径、URL和堆栈跟踪 以下是我的配置文件: co
我已经去了,但找不到任何关于抛出原始错误的文档。有可能吗 因此,我深入研究了strong error handler库,发现如果我们手动将statusCode设置到错误中,那么在技术上是可以做到的,并且必须在400-499之间 在buildResponseData函数中: 因此,在抛出错误之前,我们可以设置:
const error = new Error();
error.name = 'Custom Error';
error.message = 'Error Message';
error.statusCode = 404;
throw error;
然后,即使使用debug:false模式,它也会返回错误
{
"final:after": {
"strong-error-handler": {
"params": {
"debug": true,
"log": true,
"safeFields": [
"code"
]
}
}
}
}
{
"final:after": {
"strong-error-handler": {
"params": {
"debug": false,
"log": true,
"safeFields": [
"code"
]
}
}
}
}
if (data.statusCode >= 400 && data.statusCode <= 499) {
fillBadRequestError(data, err);
} else {
fillInternalError(data, err);
}
function fillBadRequestError(data, err) {
data.name = err.name;
data.message = err.message;
data.code = err.code;
data.details = err.details;
}
const error = new Error();
error.name = 'Custom Error';
error.message = 'Error Message';
error.statusCode = 404;
throw error;