0

アセットのプリコンパイルで非常に厄介で永続的な問題があり、自分では解決できないようです。エラーのないファイルでは、コンパイルは常に失敗します。たとえば、以下のエラーはcopies.js.coffeeコメントのみのファイルにあります。そのファイルを削除すると、別のファイルでエラーが発生します。私のすべてのアセットファイルのタイプはus-ascii-どのファイルにも奇妙な文字はありません。Rails3.1.3を使用しています。私はRuby1.9.2と1.9.3の両方で試しました-違いはありません。

$ rake assets:precompile --trace
(in /cygdrive/c/Development/artwork2)
** Invoke assets:precompile (first_time)
** Execute assets:precompile
/home/kari/.rvm/rubies/ruby-1.9.3-p0/bin/ruby.exe /home/kari/.rvm/gems/ruby-1.9.3-p0/bin/rake assets:precompile:all RAILS_ENV=production RAILS_GROUPS=assets --trace
** Invoke assets:precompile:all (first_time)
** Execute assets:precompile:all
** Invoke assets:precompile:primary (first_time)
** Invoke assets:environment (first_time)
** Execute assets:environment
** Invoke tmp:cache:clear (first_time)
** Execute tmp:cache:clear
** Execute assets:precompile:primary
rake aborted!
湉異⁴牅潲㩲唠歮潮湷漠瑰潩⼢祣摧楲敶振唯敳獲欯牡⽩灁䑰瑡⽡潌慣⽬敔灭支數橣㉳㄰〲ㄱⴲ㔵〲㐭瀶湸⸱獪•灳捥晩敩⹤਍
  (in /cygdrive/c/Development/artwork2/app/assets/javascripts/copies.js.coffee)
/home/kari/.rvm/gems/ruby-1.9.3-p0/gems/execjs-1.2.13/lib/execjs/external_runtime.rb:150:in `exec_runtime'
/home/kari/.rvm/gems/ruby-1.9.3-p0/gems/execjs-1.2.13/lib/execjs/external_runtime.rb:27:in `block in exec'
/home/kari/.rvm/gems/ruby-1.9.3-p0/gems/execjs-1.2.13/lib/execjs/external_runtime.rb:40:in `compile_to_tempfile'
/home/kari/.rvm/gems/ruby-1.9.3-p0/gems/execjs-1.2.13/lib/execjs/external_runtime.rb:26:in `exec'
/home/kari/.rvm/gems/ruby-1.9.3-p0/gems/execjs-1.2.13/lib/execjs/external_runtime.rb:18:in `eval'
/home/kari/.rvm/gems/ruby-1.9.3-p0/gems/execjs-1.2.13/lib/execjs/external_runtime.rb:32:in `call'
/home/kari/.rvm/gems/ruby-1.9.3-p0/gems/coffee-script-2.2.0/lib/coffee_script.rb:57:in `compile'
/home/kari/.rvm/gems/ruby-1.9.3-p0/gems/tilt-1.3.3/lib/tilt/coffee.rb:46:in `evaluate'

これは本当に迷惑で、私は前に進むことができません。私はここや他の場所から見つけたほとんどすべてを試しました。

追加:私はこれをcygwinとUbuntuの両方でrvmの下で試しました。

4

2 に答える 2

2

見た目では、javascriptファイルの1つが何らかの形で無効になっています。

すべてが開発モードで正しく実行されていると思います。つまり、すべてがブラウザーで正しく機能しているのでしょうか。

この場合、すべてのファイルがデバッグモードで提供されるため、コードは開発中に正しく実行されます。これらのファイルは連結または圧縮されていません。コンパイルされると、最初に連結されてから圧縮されます。

問題は、含まれているファイルの1つにセミコロンがないという形式の構文エラーである可能性があります。Javascriptコンプレッサーは、コードの1つのブロックが終了し、別のブロックが開始する場所を判別するためにこれらを必要とします。最初に確認する場所は、プラグイン定義の終わりです。問題が1つのファイルにあると仮定すると、一度に1つのファイルだけを削除し、実行されるまでコンパイルすると、原因が発生します。

于 2012-01-13T09:10:02.900 に答える
1

問題はコーヒーレールにありました。生成されたすべてのコーヒーファイルをアセットから削除しました。生成されたコメントのみが含まれ、他には何も含まれていませんでした。その後、アセットは本来あるべきようにコンパイルされました。どこかに悪いバグがあるに違いありません。数時間かかりました。方法を提案してくれたリチャードに感謝します。

于 2012-01-13T19:48:59.000 に答える