браузер `console.error` отслеживает стек от ошибки, а не там, где вызывался console.error? - PullRequest
0 голосов
/ 15 апреля 2020

Я использую 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(), они одинаковые). Вот что я имею в виду:

enter image description here

Строки с отступом являются частью сообщения (err.toString()). Последние две строки видны, когда вы нажимаете раскрывающий треугольник в левом верхнем углу рядом с «Ошибка:». Этот последний стек я бы хотел исправить. Как вы можете видеть, он находится не в той строке и полностью пропускает функцию «err», потому что это просто стек в точке вызова console.error().

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...