Пользовательские классы ошибок не расширяются правильно

У меня есть несколько пользовательских классов ошибок

GenericError.js

import { errorCodes, errorMessages } from './errorConstants';

class GenericError extends Error {
    constructor(message = errorMessages.UNKNOWN, code = errorCodes.UNKNOWN, description) {
      super();
      Error.captureStackTrace(this, this.constructor);
      this.name = this.constructor.name;
      this.message = message;
      this.code = code;
      this.description = description;
    }

    stringify() {
        return JSON.stringify({
            error : {
                message: this.message || "Unknown Error.",
                code: this.code,
                description: this.description
            },
        })
    }
}

export default GenericError;

NotFoundError.js

import GenericError from "./GenericError";
import {errorMessages, errorCodes} from "./errorConstants";

class NotFoundError extends GenericError {
    constructor(message = errorMessages.NOT_FOUND, code = errorCodes.NOT_FOUND, description = "Not Found.") {
        super(message, code, description);
        this.name = this.constructor.name;
     }

}

export default NotFoundError;

Однако, когда я использую эту функцию

firebaseUtils.getInfo(user)
    .then((info) => {
        const infoSnapshot = info || {};
        if (//some logic here) {
            throw new NotFoundError();
        }
        response.send(JSON.stringify(infoSnapshot));
    })
    .catch((error) => {
        if(error.name === "NotFoundError") {
            response.status(error.getCode).send(error.stringify());
            return;
        }


    })

Когда я выбрасываю новый NotFoundError(), по какой-то причине error.name имеет значение Error вместо NotFoundError, а stringify не является функцией?

Кто-нибудь может сказать мне, что не так?

РЕДАКТИРОВАТЬ: Удален машинописный текст из моего кода, и он не работает!


person ylin6    schedule 01.03.2018    source источник
comment
можно переименовать PidNotFoundError в NotFoundError или они разные, если разные то где NotFoundError класс?   -  person Bk Santiago    schedule 01.03.2018
comment
извините, это опечатка, плохо отредактировал   -  person ylin6    schedule 01.03.2018
comment
Похоже, это проблема компиляции es6 до es5. Пришлось использовать этот хак, чтобы заставить его работать medium.com/@ xpl/   -  person ylin6    schedule 01.03.2018