我正在尝试定义我自己的错误格式,以便在响应中返回。 我编写了自己的中间件:
function catchAndLogErrors(app) {
return function (err, req, res, next) {
// stuff happening...
throw new Error(err.message, {name: err.name, code: err.code, className: err.className, info: err.info, data: err.data});
};
}
然后在/src/middleware/index.js
我评论了handler
并放置了我自己的中间件:
const handler = require('feathers-errors/handler');
const catchAndLogErrors = require('my-middleware');
...
app.use(catchAndLogErrors(app));
// app.use(handler());
但是我得到了以HTML格式返回的错误,它实际上只是消息和堆栈跟踪,但没有其他属性。
有什么想法吗?
答案 0 :(得分:1)
由于您注释掉了Feathers error handler,您必须实现自己的Express error handler格式化错误并发送响应(而不是仅仅抛出它)与此类似(如果您要发送JSON):
function catchAndLogErrors(app) {
return function (err, req, res, next) {
res.json(err);
};
}
修改服务方法调用错误的真正的Feathers方法是error hooks。他们允许您将hook.error
修改为您需要的响应,例如application wide hook适用于所有服务电话:
app.hooks({
error(hook) {
const err = hook.error;
//change `hook.error` to the modified error
hook.error = new Error(err.message, {
name: err.name,
code: err.code,
className: err.className,
info: err.info,
data: err.dat
});
}
});