Javascript 将堆栈跟踪引用添加到现有的无上下文错误对象

Javascript 将堆栈跟踪引用添加到现有的无上下文错误对象,javascript,node.js,v8,Javascript,Node.js,V8,我偶尔会从库调用返回错误,但是错误的堆栈跟踪并没有保留完整的堆栈跟踪,因此很难准确地找出这是从哪里冒出来的 我想找出一种方法,添加对访问此错误堆栈跟踪的位置/文件的引用。我可能无法捕获顶级函数名,但即使这样,如果我能够获得错误处理程序的行号,也足以为我指明正确的方向 在对它进行修补之后,我相信我可能会有一个相当粗糙的解决方案可以工作(尽管它在我的生产环境中未经测试) 此日志添加了调用到错误对象堆栈跟踪的最后三个方法 我也看到了这一点,这表明可能有一种原生的V8实现方式,我更感兴趣的是使用这种方式

我偶尔会从库调用返回错误,但是错误的堆栈跟踪并没有保留完整的堆栈跟踪,因此很难准确地找出这是从哪里冒出来的

我想找出一种方法,添加对访问此错误堆栈跟踪的位置/文件的引用。我可能无法捕获顶级函数名,但即使这样,如果我能够获得错误处理程序的行号,也足以为我指明正确的方向

在对它进行修补之后,我相信我可能会有一个相当粗糙的解决方案可以工作(尽管它在我的生产环境中未经测试)

此日志添加了调用到错误对象堆栈跟踪的最后三个方法

我也看到了这一点,这表明可能有一种原生的V8实现方式,我更感兴趣的是使用这种方式


是向现有错误对象的堆栈跟踪添加引用的本机方法吗?除此之外,还有没有更优雅的方法来处理向堆栈跟踪添加上下文的问题?

更多信息供未来的观众参考,指向My hacky解决方案的链接最终让我找到了这些错误的来源,但是这个解决方案还远远不够完美。
var addStackFrame = function(e) {
  var splitStack = e.stack.split("\n");

  // We splice from the 3rd element to drop
  // the error name, and addStackFrame() reference.
  var thisLine = new Error().stack
                  .split("\n")
                  .slice(2, 3)
                  .join('\n');

  e.stack = [splitStack[0], thisLine]
            .concat(splitStack.slice(1))
            .join("\n");

  return e;
};