我刚刚意识到源映射 - 一个期待已久的功能。令我印象深刻的是,很多人聚在一起为咖啡脚本(浏览器,kickstart项目等......)实现了这个目标。
我设置了一个小测试,所以我可以理解如何使用它...
N.B。这里有一个故意的错误,因为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"
}
// 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中设置断点的位置似乎有点不稳定)
我遇到的问题是,当出现错误时,控制台会报告javascript文件的行号。如何找出导致错误的咖啡脚本源文件的行?
我在OSX 10.8.2上使用Google Chrome版本23.0.1271.101
答案 0 :(得分:3)
我其实只是回答了我自己的问题,与你的问题非常相似。你可以看看here。
我使用的解决方案是使用coffeeify作为转换选项,使用browserify连接/编译我的所有coffeescript。当在browserify中将debug设置为true时,所有行号都应映射回原始coffeescript源中的正确行。
答案 1 :(得分:0)
我发现问题只发生在Chrome控制台的初始打开状态。
如果在控制台打开时刷新浏览器,控制台将使用指向源映射文件的链接进行更新。
此外,如果先打开控制台然后导航到该页面,控制台将使用指向源映射文件的链接进行更新。
这是与Chrome首次打开控制台相关的问题。