使用 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)
有没有人成功地将错误堆栈转换为引用其源地图位置的项目的堆栈?