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Нужно вернуть обещание.

Другие вопросы по тегам