如何在不停止脚本的情况下获取 JS 堆栈跟踪?

How can I get a JS stack trace without halting the script?

如果您在 JavaScript 中 throw,抛出的错误通常会传播到 window.onerror 处理程序,它可以停止脚本的进一步执行。

有没有什么方法可以在不导致执行停止的情况下从函数内部获取堆栈跟踪?

除非被 try/catch.

捕获,否则抛出错误将停止堆栈
function getStack() {
    try {
        throw new Error();
    } catch(e) {
        return e.stack;
    }
}

从任何函数中调用 getStack 将从那里打印出堆栈。

请注意,堆栈中的方法名称不受 sourcemaps 的影响,因此如果您正在处理缩小的代码,您可能仍会得到混淆的名称。

您也可以只创建一个新错误而不抛出它并使用堆栈跟踪

function doSomething() {
    ...
    const stackTrace = new Error().stack
    ...
}