使用 Chrome 时,我通过 Mocha 测试运行程序收到错误,作为afterEach
with的一部分捕获this.currentTest.err
。
我正在使用令人敬畏的 coffeeify 插件使用带有调试选项的 browserify 编译咖啡脚本。这会生成一个bundle.js
带有 a的编译文件sourceMappingURL=data:...
,允许我直接查看和调试原始咖啡脚本。
不幸的是,当我访问err.stack
MochaafterEach
挂钩时,堆栈包含对相应文件的引用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)
有没有人成功地将错误堆栈转换为引用其源地图位置的项目的堆栈?