10

私はRails 3.1アプリを本番環境に導入する準備ができています。アセットパイプラインを使用しているので、I need to precompile my assetsです。私はこれを試してみてくださいしかし、私は明らかにjQueryのコンパイルに関連するエラーが表示されます。bundle exec rake assets:予期しないトークンでプリコンパイルが失敗する

$ bundle exec rake --trace assets:precompile 
** Invoke assets:precompile (first_time) 
** Execute assets:precompile 
/home/adam/.rvm/rubies/ruby-1.9.3-p0/bin/ruby /home/adam/.rvm/gems/[email protected]/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 environment (first_time) 
** Execute environment 
** Invoke tmp:cache:clear (first_time) 
** Execute tmp:cache:clear 
** Execute assets:precompile:primary 
rake aborted! 
399: unexpected token at '"/*!\u000a * jQuery JavaScript Library v1.7.1\u000a * http://jquery.com/\u000a *\u000a * Copyright 2011, John Resig\u000a * Dual licensed under the MIT or GPL Version 2 licenses.\u000a * http://jquery.org/license\u000a *\u000a * Includes Sizzle.js\u000a * http://sizzlejs.com/\u000a * Copyright 2011, The Dojo Foundation\u000a * Released under the MIT, BSD, and GPL Licenses.\u000a *\u000a * Date: Mon Nov 21 21:11:03 2011 -0500\u000a */\u000afunction addActiveScaffoldPageToHistory(a,b){if(typeof 

[原料の多くを切り取る]

(in /data/music/RotC/eventbook/app/assets/javascripts/application.js) 
/home/adam/.rvm/gems/ruby-[email protected]/gems/json-1.6.4/lib/json/common.rb:148:in `parse' 
/home/adam/.rvm/gems/[email protected]/gems/json-1.6.4/lib/json/common.rb:148:in `parse' 
/home/adam/.rvm/gems/[email protected]/gems/multi_json-1.0.4/lib/multi_json/engines/json_common.rb:9:in `decode' 
/home/adam/.rvm/gems/[email protected]/gems/multi_json-1.0.4/lib/multi_json.rb:76:in `decode' 
/home/adam/.rvm/gems/[email protected]/gems/execjs-1.2.13/lib/execjs/external_runtime.rb:61:in `extract_result' 
/home/adam/.rvm/gems/[email protected]/gems/execjs-1.2.13/lib/execjs/external_runtime.rb:27:in `block in exec' 
/home/adam/.rvm/gems/[email protected]/gems/execjs-1.2.13/lib/execjs/external_runtime.rb:40:in `compile_to_tempfile' 
/home/adam/.rvm/gems/[email protected]/gems/execjs-1.2.13/lib/execjs/external_runtime.rb:26:in `exec' 

[たくさんの、より多くのものを中略]

ここに私のapplication.jsです:

//= require jquery 
//= require jquery_ujs 
//= require jquery-ui 
// 
// N.B. jQuery requires have to come before this: 
//= require active_scaffold 

私はuglifierつまり、デフォルトのコンプレッサーを使用しています。

私はconfig/environments/production.rbfalseconfig.assets.compressを変更した場合、それが正常に動作することを発見しましたが、私はtrueとしてそれを維持する方法を見つけ出すことができれば、もちろん私のアプリは、パフォーマンスが向上します。

私はrake assets:precompile doesn't work (rails 3.1.1)を見ましたが、エラーはundefined: Unexpected token: operator (<)であるため重複しているとは思われません。

アイデア? jQueryコードのユニコード文字は漠然と疑わしいですが、問題を引き起こしていることを証明するかどうかはわかりません。

+0

どのコンプレッサーを使用していますか?あなたのapplication.jsには何がありますか? –

+0

質問が更新されました。 –

答えて

20

私はこのまったく同じ問題を抱えていたし、ここで、それを解決するには、詳細は以下のとおりです。あなたはapplication.jsと//= require ...を使用して、Railsの3.1環境内の1つまたは複数のJavaScriptファイルが含まれている場合

、Railsは内容をラップしますあなたのファイルの<script> ..filecontents.. </script>でこれを確認するには、サイトを開発モードで実行し、表示|ソース。あなたが実際にそのスクリプトを使用してないをしている場合

問題は、開発モードでは、ある、は正常に動作する表示されることがあります。しかし、基本的に、あなたが持っているのは<script><script> ..filecontents.. </script></script>です。

しかし、アセットをPRECOMPILEしようとすると、内側のスクリプトトークンの "<"にそのコンパイルプロセス(何が正確かわかりません)のギャグが入ります。

添付された.jsファイルを再確認し、いずれかが包まれている場合は<script> ... </script>周辺タグを削除してください。

「開発」では、「ページソースを表示」を選択しても、すべてが正常に表示されます。そして、資産をプリコンパイルすると、エラーは消えてしまいます。

Googleの推奨するGoogleアナリティクスのjavascriptスニペットでこの問題が発生し、含まれているファイルからスクリプトラッパーを削除すると問題が解決しました。

+0

これを報告する時間をとってくれてありがとう、Dave。実際にこの質問をしてから、ある時点で、問題は私のために魔法のように修正されました。おそらく、Railsを3.2または1つの宝石にアップグレードしたことが原因でしょうか?しかし、私はあなたの答えを受け入れています。なぜなら、それでも問題を抱えている人々のためのもっともらしい解決策のように聞こえるからです。 –

+0

と9ヶ月後に....それは私の問題を修正! – Ryan

+0

ありがとう!私はレールでこれを見つけました3.2。スーパーヘルプ! – EricC

0

私は非常に同じ問題を抱えていました。

私のjavascriptファイルに<script>というタグはありませんでしたが、Daveの提案は私を大いに助けました!

は私が私の application.jsにロードされた外部のlibにコメントを見つけることができました:単一のコメントは私の uglifier圧縮を破ったことを

<!-- Hotjar Tracking Code for (...) ->

、それはそれを見つけるために私に長い時間がかかったし、おそらくそれが原因だと思うかもしれません。

したがって、は、JSファイルの最初のコメントに注意してください。は圧縮を破る可能性があるため注意してください。

+0

JavaScriptにコメントを入れたい場合は、 * */'または' // '。 – meagar

+0

ヒントをありがとう。ホットジャーを埋め込んだときにコピーした' hotjar'組み込みコードに由来しています。 – lucasarruda

5

これをデバッグする方法は次のとおりです。

局所的には、(右窒息する前に、スクリプトがあなたが見てみたいと思うファイルです)、それはチョーク場所を探してみてください、この

RAILS_ENV=production bundle exec rake assets:precompile

を実行します。すべての必要を見てください。

私の場合、.jsxになっていたはずのファイルが.jsで終わっていましたが、それが修正されました。

関連する問題