12

Rails アプリの 1 つで、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をチェックしたところ、一致しているようです。

コンパイル エラーを修正すると、アプリは正常に動作することに注意してください (たとえば、コーヒー ファイルは実際にコンパイルされます)。ただし、これらの行番号でコンパイル エラーを指摘してもらえると便利です!

編集 それが ExecJSRuntimeerrorか a かProgramErrorは問題ではないように思われることに気付きました-最初のアプリでは行番号が指定されておらず、2 番目のアプリでは常に行番号が指定されています。

4

2 に答える 2

2

これは、gemのエラー メッセージに行情報を埋め込むこのパッチで修正することもできます。ruby-coffee-script

ソース マップを使用している場合、このパッチcoffee-rails-source-mapsはgemを修正します。

于 2013-10-06T17:24:31.473 に答える