我正在使用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本身(以d8
shell的形式)的行为不同,甚至Node的REPL的行为也不同。
第二次观察:console.log(new Error("...").stack)
打印foo
没有方括号