我希望让Rails与已编译的coffeescript / minified JS一起生成源映射,以便更好地记录错误。但是,网上似乎没有关于如何执行此操作的全面文档。有没有人这样做过?
我在Rails 3.2和Heroku上。
答案 0 :(得分:11)
Rails支持缩小javascript的源映射! Rails依赖sprockets进行资产编译,源地图支持被添加到this pull request的链接中。
编辑2016-12-07以更新主要答案文本。
答案 1 :(得分:3)
如果你真的不想要源映射,而只是想在咖啡脚本编译异常中行号,请试试这个:
过去只是在Gemfile中使用coffee-rails会在原始coffeescript源中产生带有行号的异常。然后,他们消失了一个没有行数的例外。我做了一些挖掘,我发现coffee-script-source
1.5.x在编译异常中给出了行号,而coffee-script-source
1.6.x没有。我相信这是一个错误,如果将来“固定”,我不会感到惊讶。
# Gemfile
gem 'coffee-rails', '~> 4.0.0'
gem 'coffee-script-source', '~> 1.5.0' # 1.6 doesn't include line numbers in exceptions
然后你会得到例外('coffee-script-source','〜> 1.5.0')
Showing /Users/.../app/views/layouts/application.html.erb where line #12 raised:
SyntaxError: missing } on line 15
(in /Users/.../app/assets/javascripts/app.js.coffee)
而不是('coffee-script-source','〜> 1.6.3')
Showing /Users/.../app/views/layouts/application.html.erb where line #12 raised:
SyntaxError: missing }
(in /Users/.../app/assets/javascripts/app.js.coffee)
答案 2 :(得分:2)
经过测试。有用。 https://github.com/markbates/coffee-rails-source-maps。但是它会使您的资产渲染速度变慢。
答案 3 :(得分:1)
这看起来应该有效:http://alexspeller.com/2012/09/15/Source_maps_for_coffeescript_in_rails.html
尽管如此,请记住最后的警告:
重要提示:这个相当野蛮的黑客取代了正常 coffeescript编译器通过shelling输出到CoffeeScriptRedux 编译器,实际上并没有完成。这只是一个证明 概念,你可能不应该使用它。
所以我不建议在生产中运行它,但是如果你有一个暂存环境(也在Heroku上,也使用缩小的Javascript),它可能会有用。