Coffeescript 中的源映射 - 错误未映射到源

我刚刚意识到源映射 - 一个期待已久的功能.让我印象深刻的是这么多人聚在一起为咖啡脚本(浏览器、kickstart 项目等)实现它

I just became aware of source mapping - a long awaited feature. I am impressed so many people got together to make it happen for coffee-script (browsers, kickstart project etc...)

我设置了一个小测试,所以我可以理解如何使用它......

I set up a little test, so I could understand how to use it...

注意这里有一个故意的错误,因为 y 没有定义

console.log 123

sq = (x)->
  x * x

console.log "thats how easy: "+sq y

来源地图

{
  "version": 3,
  "file": "test.js",
  "sourceRoot": "",
  "sources": [
    "test.coffee"
  ],
  "names": [],
  "mappings": ";AAAA;CAAA,CAAA,IAAA;CAAA;CAAA,CAAA,CAAA,IAAO;;CAAP,CAEA,CAAK,MAAC;CACJ,EAAI,QAAJ;CAHF,EAEK;;CAFL,CAKA,CAAA,IAAO,WAAK;CALZ"
}

Javascript

// Generated by CoffeeScript 1.6.1
(function() {
  var sq;

  console.log(123);

  sq = function(x) {
    return x * x;
  };

  console.log("thats how easy: " + sq(y));

}).call(this);
//@ sourceMappingURL=test.map

翡翠

html
  head
    script(src="test.js")
  body
    h1 Test Page

这一切似乎都在工作,因为咖啡脚本源已显示,我什至可以设置断点(但图形似乎没有显示,并且在 javascript 中设置断点的位置似乎有点不稳定).

This all seems to be working, because the coffee-script source is displayed, and I can even set breakpoints (but the graphic seems not to show, and it seems a little erratic in where the breakpoints are set in the javascript).

我遇到的问题是,当出现错误时,控制台会报告 javascript 文件的行号.如何找出导致错误的咖啡脚本源文件的行?

The problem I am having is that when there is an error, the console reports the line number of the javascript file. How can I find out the line of the coffee-script source file that causes the error?

我在 OSX 10.8.2 上使用 Google Chrome 版本 23.0.1271.101

I am using Google Chrome Version 23.0.1271.101 on OSX 10.8.2

推荐答案

实际上我刚刚回答了我自己的问题,与你的问题非常相似.您可以查看此处.

I actually just answered my own question very similar to yours. You can take a look here.

我正在使用的解决方案是使用browserify 连接/编译我所有的coffeescript,使用coffeeify 作为转换选项.在 browserify 中将 debug 设置为 true 时,您的所有行号都应映射回原始咖啡脚本源中的正确行.

The solution I am using is to concat/compile all my coffeescript with browserify,using coffeeify as a transform option. When debug is set to true in browserify, all your line numbers should map back to the correct line in your original coffeescript source.

相关文章