Restify возвращает undefined не является функцией в объекте ошибки
У меня есть пользовательская ошибка Restify ниже, которая выдается в мой блок catch BlueBird Promise.
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?
2 ответа
Решение
Я нашел ответ. это было respObject.toJSON()
это было причиной undefined is not a function
так как respObject
не имеет toJSON()
функция:)
Проблема не в Restify, а в вашем test
функция. Ты звонишь test().catch
, но test()
ничего не возвращает - т.е. возвращает undefined
, Вы по сути звоните undefined.catch
, которого не существует
Если вы хотите позвонить catch
на результат test
Нужно вернуть обещание.