开发Rails应用时如何保留JavaScript断点?
哈哈,这个坑我当初踩过好多次!确实是Rails开发环境的资产指纹机制在作祟——每次你修改JS文件,Rails都会给编译后的application.js加上新的哈希后缀,Chrome找不到原来的断点关联,自然就消失了。给你几个实用的解决办法,按需选择:
关闭开发环境的资产指纹
打开config/environments/development.rb,找到或添加这行配置:config.assets.digest = false这样Rails就不会给资产文件名加哈希后缀了,刷新页面后文件名保持不变,Chrome的断点就能稳定保留。不过要记得生产环境一定要把这个设置改回
true,因为资产指纹是生产环境缓存策略的关键哦。启用源映射(Source Maps)
这是更推荐的方案,不用关闭指纹,还能直接调试原始JS文件。确认你的config/environments/development.rb里有这两个配置:config.assets.debug = true config.assets.source_maps = true开启后,Chrome调试工具的Sources面板里,你能找到
assets/目录下的原始JS文件(不是编译后的大文件),直接在这些原始文件里加断点就行。哪怕Rails生成新的哈希文件名,源映射会自动把编译后的代码和原始文件对应起来,断点永远不会丢。Chrome工作区映射(进阶技巧)
如果上面的方法还不够顺手,你可以用Chrome的“保存到工作区”功能:在Sources面板里找到对应的JS文件,右键选择“映射到文件系统中的资源”,把浏览器里的文件和你本地项目中的文件绑定。这样修改本地文件后,浏览器会直接加载本地版本,断点完全不受Rails文件名变化的影响,还能直接在调试工具里修改文件并保存到本地。
内容的提问来源于stack exchange,提问作者Stephen Lead

