1

使用 Chrome 时,我通过 Mocha 测试运行程序收到错误,作为afterEachwith的一部分捕获this.currentTest.err

我正在使用令人敬畏的 coffeeify 插件使用带有调试选项的 browserify 编译咖啡脚本。这会生成一个bundle.js带有 a的编译文件sourceMappingURL=data:...,允许我直接查看和调试原始咖啡脚本。

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

这是一些带有 browserify 的示例代码。

首先,使用 npm 安装它(为方便起见):

$ npm install -g browserify; npm install coffeeify

x.咖啡

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.js, x.coffee(来自sourceMapURL) 和x.html.

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

错误:抛出。
    在错误()
    在对象。(文件://localhost/Users/bmh/tmp/x.js:5:9)
    在我(文件://localhost/Users/bmh/tmp/x.js:1:219)
    错误时(文件://localhost/Users/bmh/x.js:1:382)
    在文件://localhost/Users/bmh/tmp/x.js:1:400

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

错误:抛出。
    在错误()
    在对象。(文件://localhost/Users/bmh/tmp/x.coffee:2:5)

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

4

1 回答 1

1

I'm not sure about coffeeify, but the source-map-support module adds .stack support for code bundled with browserify. Just npm install source-map-support and put require('source-map-support').install() at the top of your code.

于 2013-08-18T16:12:05.107 回答