使用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
try
throw Error("Thrown.")
catch err
console.log err.stack
使用以下内容转换为x.js
$ browserify -t coffeeify x.coffee -d > x.js
<html>
<head>
<script src='x.js'></script>
</head>
<body></body>
</html>
如果在Chrome中打开此功能,开发工具将显示x.js
,x.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)
是否有人将错误堆栈转换为引用其源地图位置的项目的成功?
答案 0 :(得分:1)
我不确定coffeeify,但source-map-support模块为与browserify捆绑的代码添加.stack
支持。只需npm install source-map-support
并将require('source-map-support').install()
放在代码的顶部。