ruby-on-rails – ExecJS咖啡脚本不显示编号错误的行号(Rails资产管道)

前端之家收集整理的这篇文章主要介绍了ruby-on-rails – ExecJS咖啡脚本不显示编号错误的行号(Rails资产管道)前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
在我的一个Rails应用程序中,ExecJS没有显示coffeescript编译错误的行号.我的编译错误信息将如下所示:
ExecJS::RuntimeError in Referrals#new

Showing ~/MyApp/app/views/layouts/application.html.erb where line #6 raised:

SyntaxError: unexpected IDENTIFIER
  (in ~/MyApp/assets/javascripts/utils.js.coffee)

请注意,咖啡脚本源没有行号(第6行是erb文件).

在另一个我的应用程序中,我仍然得到行号,语法错误如下所示:

ExecJS::ProgramError in Projects#show

Showing ~/OtherApp/app/views/layouts/application.html.erb where     line #17 raised:

Error: Parse error on line 6: Unexpected 'STRING'
(in ~/OtherApp/app/assets/javascripts/projects.js.coffee)

所以似乎不同之处在于ExecJS :: ProgramError将给出行号,其中ExecJS :: RuntimeError将不会.

任何人有什么想法如何得到行号回来?为什么我的应用程序在咖啡资源编译时创建RuntimeErrors,而另一个则是给予ProgramErrors?我检查了Rails,他们似乎匹配.

请注意,如果我修复编译错误,应用程序运行正常(例如,咖啡文件实际上是编译) – 但是这些行号可能会指向我的编译错误

编辑
我意识到,无论是ExecJS Runtimeerror还是ProgramError似乎并不重要 – 在第一个应用程序中,没有给出行数,在第二个应用程序中总是存在.

解决方法

我想出来 – 这是由于咖啡脚本源的宝石版本.在给出行号的应用程序中,bundle show给出了1.4.0的咖啡脚本源,而另一个应用程序的咖啡脚本源版本为1.6.1.

我没有注意到这一点,因为咖啡轨宝石并没有严格规定这种依赖(在我的Gemfiles中,我使用的是宝石’咖啡轨’,’3.2′).为了解决这个问题,只需明确指定coffee-script-source gem版本:

gem 'coffee-rails','3.2.2'
gem 'coffee-script-source','1.5.0'

并捆绑更新咖啡脚本源.

希望这可以帮助任何可能遇到这种差异的人.

猜你在找的Ruby相关文章