gpt4 book ai didi

ruby-on-rails - ExecJS CoffeeScript 未显示编译错误的行号(Rails Assets 管道)

转载 作者:行者123 更新时间:2023-12-04 01:44:45 27 4
gpt4 key购买 nike

在我的一个 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)

请注意, CoffeeScript 源没有行号(第 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将不会。

有人知道如何取回行号吗?为什么我的应用程序会在咖啡 Assets 编译时创建 RuntimeErrors,而另一个却提供 ProgramErrors?我检查了 Rails,它们似乎匹配。

请注意,如果我修复了编译错误,则应用程序运行良好(例如,咖啡文件实际上已被编译)——但最好让这些行号指向编译错误!

编辑
我意识到无论是 ExecJS RuntimeerrorProgramError似乎无关紧要——在第一个应用程序中,从来没有给出行号,而在第二个应用程序中,总是有。

最佳答案

我想通了——这是由于 coffee-script-source gem 版。在给出行号的应用程序中,bundle show提供 1.4.0 的 CoffeeScript 源,而另一个应用程序的 CoffeeScript 源版本为 1.6.1。

我没有注意到这一点,因为 coffee-rails gem 没有严格指定这种依赖关系(在我的两个 Gemfiles 中,我都使用了 gem 'coffee-rails', '3.2' )。 要解决这个问题,只需明确指定 coffee-script-source gem 版本 :

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

bundle update coffee-script-source .

希望这可以帮助其他可能遇到这种差异的人。

关于ruby-on-rails - ExecJS CoffeeScript 未显示编译错误的行号(Rails Assets 管道),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16369614/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com