Конструктор для объекта Error
ожидает строку, а не объект (поэтому ваша схема не работает).
Вы можете добавлять свои собственные пользовательские свойства в объект Error после того, каквы создаете его.
let err = new Error('Email already exists');
err.status = 400;
err.whateverElse = someValue;
throw err;
Стандартные свойства объекта ошибки (по некоторым причинам, я не знаю) не перечисляются, поэтому они не отображаются в некоторых контекстах (даже если они там есть),Любые новые свойства, которые вы добавляете с простым присваиванием, как указано выше, будут перечисляемыми.
К вашему сведению, вы делаете это в нескольких местах, вы также можете создать подкласс Error
объекта и дать вашему подклассу конструктор, который принимает любые аргументы, которые выхочу дать это. Этот конструктор может затем вызвать super(msg)
и затем добавить свои собственные свойства к объекту ошибки из аргументов конструктора.