Restify returns undefined 不是错误对象中的函数
Restify returns undefined is not a function in error object
我有一个下面的 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 块下的上述调用函数是有原因的吗?
问题不在于 Restify,而在于您的 test
函数。您正在调用 test().catch
,但 test()
没有 return 任何东西——即它 returns undefined
。您实质上是在调用 undefined.catch
,它不存在。
如果你想在 test
的结果上调用 catch
,它需要 return 一个承诺。
我找到了答案。 respObject.toJSON()
导致 undefined is not a function
因为 respObject
没有 toJSON()
功能:)
我有一个下面的 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 块下的上述调用函数是有原因的吗?
问题不在于 Restify,而在于您的 test
函数。您正在调用 test().catch
,但 test()
没有 return 任何东西——即它 returns undefined
。您实质上是在调用 undefined.catch
,它不存在。
如果你想在 test
的结果上调用 catch
,它需要 return 一个承诺。
我找到了答案。 respObject.toJSON()
导致 undefined is not a function
因为 respObject
没有 toJSON()
功能:)