如何解除V8中的error.stack?

看来在第一次使用Error.prepareStackTrace后, Error.prepareStackTrace的输出被caching:

 try { null(); } catch (error) { Error.prepareStackTrace = () => { return 'Hello, World!'; }; console.log('#0', error.stack); Error.prepareStackTrace = () => { return 'Hello, Stack Trace!'; }; console.log('#1', error.stack); } 

电stream输出:

 #0 Hello, World! #1 Hello, World! 

预期产出:

 #0 Hello, World! #1 Hello, Stack Trace! 

如何uncache error.stack值以允许进一步使用Error. prepareStackTrace Error. prepareStackTrace ? 没有这个,我不能保证当我有error ,其他人还没有把堆栈倒掉。

这个怎么样:

 var getStackTrace; Error.prepareStackTrace = () => { return { toString: () => getStackTrace() }; }; var exception; try { null(); } catch (e) { exception = e; } getStackTrace = () => "Hello World."; console.log(exception.stack); getStackTrace = () => "Hello Stack Trace."; console.log(exception.stack);