Javascript Stacktrace在节点中使用Coffeescript-行号不匹配

Javascript Stacktrace在节点中使用Coffeescript-行号不匹配,javascript,node.js,coffeescript,Javascript,Node.js,Coffeescript,在一个项目中,我对node使用CoffeeScript,但每当它抛出这样的错误,我检查行时,它与CoffeeScript文件中的实际行号不对应。我怎样才能解决这个问题 2015-05-29T09:35:09.793Z - error: [api] TypeError: Cannot call method 'logger' of undefined stack=TypeError: Cannot call method 'logger' of undefined at /path/pat

在一个项目中,我对node使用CoffeeScript,但每当它抛出这样的错误,我检查行时,它与CoffeeScript文件中的实际行号不对应。我怎样才能解决这个问题

2015-05-29T09:35:09.793Z - error: [api] TypeError: Cannot call method 'logger' of undefined stack=TypeError: Cannot call method 'logger' of undefined
    at /path/path-api/src/plugins/file.coffee:286:32
    at /path/path-api/node_modules/mongodb/lib/mongodb/collection/query.js:159:5
    at Cursor.nextObject (/path/path-api/node_modules/mongodb/lib/mongodb/cursor.js:742:5)

Coffeescript传输到Javascript,然后由Node.js执行。由于coffeescript及其所有语法糖和缩写的转换生成了javascript,因此生成的代码看起来大不相同,因此长度也不同

为了让这一点更清楚,请查看以下咖啡代码:

for a in x
  dosomethingTM()
非常简单,2行代码。将其编译(传输)到JS(最终将执行到Node.JS)将导致:

var a, i, len;

for (i = 0, len = x.length; i < len; i++) {
  a = x[i];
  dosomethingTM();
}
var a,i,len;
对于(i=0,len=x.length;i
正如您所看到的,代码看起来非常不同,并且有更多的代码行。 当调试或打印stacktrace时,您将得到执行代码的行号——这就是JS代码。为了在您的coffeescript文件中找到正确的代码行,您需要一些实践(以及良好的结构化代码)和/或所谓的源代码映射。()


您可以使用适当的源代码映射编译coffeescript:

您使用的coffeescript版本可能存在重复?我也有这个问题,但在最近(9-12个月前)版本的Coffeescript中它变得更好了。(我想是因为他们在1.6中添加了sourcemaps)