【问题标题】:CoffeeScript / JavaScript - Making promises compatible with Source Maps?CoffeeScript / JavaScript - 使 Promise 与 Source Maps 兼容?
【发布时间】:2024-01-06 04:29:02
【问题描述】:

源映射使得在浏览器中调试 CoffeeScript 代码变得非常容易。现在不能没有它!

我将 Q 用于 Promise,不幸的是,当 Promise 中出现错误时,Q 返回原始跟踪堆栈。

Q.when $.ajax(...)
.then ()->
   ...
.fail (error)->
   console.log error.stack

有没有办法在它的“源映射”计数器部分转换默认堆栈跟踪?

谢谢! :)

【问题讨论】:

    标签: javascript coffeescript promise q source-maps


    【解决方案1】:

    源映射并不是很适合这种情况,但使用 V8 JavaScript 引擎(在 Google Chrome 和 node.js 中使用),可以使用 JavaScript API 改变堆栈跟踪。

    如果您启用长堆栈跟踪,Q 将执行此操作。你不应该在生产中使用它,因为它会带来巨大的性能损失:https://github.com/kriskowal/q#long-stack-traces

    【讨论】:

    • 是的,我已经调查过了,不幸的是,在这种情况下无法让源映射工作。
    • 问题是,源映射在这种情况下意味着什么?源地图不会影响代码流,只会影响代码的位置。当与 Promise 结合使用时,我可以看到生成器正在做更多的事情,但它不会是源映射。