删除V8 prepareStackTrace中的括号



我正在使用prepareStackTrace重新格式化Node中的堆栈跟踪。很明显(节点18+)将返回值括在方括号中。我能够使用退格unicode来删除第一个,但最后一个没有成功。建议和想法为什么这样做?这个函数不仅处理堆栈跟踪,还处理错误名,所以所有内容都包含在括号中。

Error.prepareStackTrace = (err, stack) => {
return 'foo'
}

console.log(err)将堆栈打印为:

[foo]

你会注意到你丢失了名字和消息,这对于一个叫做stack trace的函数来说是很奇怪的。它必须手动重新添加,但这是可行的,尽管整个东西仍然在括号中。

这里有一个沙盒https://codesandbox.io/s/gifted-visvesvaraya-9dokms?file=/src/index.js -看看终端输出。

第一个观察:这似乎是一个奇怪的节点console实现。V8本身(以d8shell的形式)的行为不同,甚至Node的REPL的行为也不同。

第二次观察:console.log(new Error("...").stack)打印foo没有方括号

最新更新