我有一个下面的Restify自定义错误,它被抛到我的BlueBird Promise的catch块中。
var test = function() {
respObject = { hello: { world: 'aasas' } };
throw new restify.errors.ServiceError(respObject, 422);
}
然后在ServiceError中:
function ServiceError(respObject, statusCode) {
restify.RestError.call(this, {
restCode: 'ApiError',
statusCode, statusCode,
message: 'Api Error Occurred',
constructorOpt: ServiceError,
body: {
message: 'Api Error Occurrede',
errors: respObject.toJSON()
}
});
this.name = 'CustomApiError';
}
util.inherits(ServiceError, restify.RestError);
restify.errors.ServiceError = ServiceError;
然而,在test()
的调用函数:
test().catch(function(err) {
console.log(err);
});
它正在返回undefined is not a function
。是否有理由不将err
对象返回到catch块下面的上述调用函数?
答案 0 :(得分:3)
问题不在于Restify,而在于test
功能。您正在呼叫test().catch
,但test()
不会返回任何内容 - 即。它返回undefined
。你实际上是在调用undefined.catch
,但这不存在。
如果您想在catch
的结果上调用test
,则需要返回一个承诺。
答案 1 :(得分:0)
我找到了答案。由于respObject.toJSON()
没有undefined is not a function
功能导致respObject
导致toJSON()
:{/ p>