获取相对于sourceURL的Chrome堆栈错误对象跟踪

时间:2013-08-04 17:51:39

标签: google-chrome coffeescript google-chrome-devtools browserify source-maps

使用Chrome时,我通过Mocha测试运行器收到错误,该问题是afterEach this.currentTest.err的一部分。

我使用awesome coffeeify插件使用debugify编译带有browserify的coffeescript。这会生成一个带有bundle.js的编译文件sourceMappingURL=data:...,允许我直接查看和调试原始coffeescript。

不幸的是,当我访问err.stack Mocha挂钩中的afterEach时,堆栈包含对bundle.js的引用,而不是相应的.coffee文件,这将更有用

以下是一些使用browserify的示例代码。

首先,使用npm:

安装它(为方便起见)
$ npm install -g browserify; npm install coffeeify

x.coffee

try
  throw Error("Thrown.")
catch err
  console.log err.stack

使用以下内容转换为x.js

$ browserify -t coffeeify x.coffee -d > x.js

x.html

<html>
 <head>
   <script src='x.js'></script>
 </head>
 <body></body>
</html>

如果在Chrome中打开此功能,开发工具将显示x.jsx.coffee(来自sourceMapURL)和x.html

当我们运行此HTML页面时,我们得到以下输出到console

Error: Thrown.
    at Error ()
    at Object. (file://localhost/Users/bmh/tmp/x.js:5:9)
    at i (file://localhost/Users/bmh/tmp/x.js:1:219)
    at err (file://localhost/Users/bmh/x.js:1:382)
    at file://localhost/Users/bmh/tmp/x.js:1:400 

我们期望的是让跟踪引用.coffee文件,看起来像这样(我在这里为了说明目的而编写):

Error: Thrown.
    at Error ()
    at Object. (file://localhost/Users/bmh/tmp/x.coffee:2:5)

是否有人将错误堆栈转换为引用其源地图位置的项目的成功?

1 个答案:

答案 0 :(得分:1)

我不确定coffeeify,但source-map-support模块为与browserify捆绑的代码添加.stack支持。只需npm install source-map-support并将require('source-map-support').install()放在代码的顶部。