Я использую console.error
в Chrome инструментах разработчика, чтобы показать ошибки. Кажется, что трассировка стека, которую он показывает, является точкой, где вызывается console.error
, а не свойством error.stack
ошибки, которую я передаю ей. Понятно, потому что он не знает, что объект является ошибкой со свойством стека. Но я хотел бы заставить это работать, если я могу; есть ли способ заставить console.error
напечатать трассировку стека (в удобной свернутой, но расширяемой форме, которую он использует), которую я передаю ей, а не точке вызова?
Пример:
function err() {
throw new Error('hi there')
}
function f() {
try {
err()
} catch (e) {
console.error(e)
}
}
Это печатает стек в f()
, а не err()
. Возможно, есть вариант формы console.error
, который позволяет передавать в стек?
Для ясности, напечатаны два стека: первый, красным, является частью error.stack
. Второй, который появляется, когда вы щелкаете по левому раскрывающему треугольнику, происходит от console.error()
(или console.trace()
, они одинаковые). Вот что я имею в виду:
Строки с отступом являются частью сообщения (err.toString()
). Последние две строки видны, когда вы нажимаете раскрывающий треугольник в левом верхнем углу рядом с «Ошибка:». Этот последний стек я бы хотел исправить. Как вы можете видеть, он находится не в той строке и полностью пропускает функцию «err», потому что это просто стек в точке вызова console.error()
.