首页 > 解决方案 > 来自错误的浏览器`console.error`堆栈跟踪,而不是调用console.error的位置?

问题描述

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()

标签: javascriptdebugginggoogle-chrome-devtools

解决方案


推荐阅读