在我的一个 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
似乎并不重要-第一个应用程序中从来没有给出行号,在第二个应用程序中总是有行号。