0

初めてアプリをデプロイしようとしていますが、アセット パイプラインで問題が発生しています。実行するbundle exec rake assets:precompileと、次のエラーが表示されます。

cool_app@ip-10-248-17-168:/rails_apps/cool_app/current$ bundle exec rake assets:precompile
/home/cool_app/.rvm/rubies/ruby-1.9.3-p327/bin/ruby /rails_apps/cool_app/shared/bundle/ruby/1.9.1/bin/rake assets:precompile:all RAILS_ENV=production RAILS_GROUPS=assets
rake aborted!
Unexpected character '' (line: 13934, col: 1, pos: 403510)

Error
    at new JS_Parse_Error (<eval>:1720:22)
    at js_error (<eval>:1728:15)
    at parse_error (<eval>:1824:17)
    at next_token (<eval>:2070:17)
    at handle_slash (<eval>:2024:32)
    at Object.next_token [as input] (<eval>:2067:39)
    at next (<eval>:2175:37)
    at Object.semicolon [as 1] (<eval>:2221:38)
    at prog1 (<eval>:2770:28)
    at simple_statement (<eval>:2362:35)
  (in /rails_apps/cool_app/releases/20121128034720/app/assets/javascripts/application.js)

これは、javascript の迷路のどこかに不正な文字 (レンダリングされていない) があることを意味すると思います (以前に展開する必要がありました!) が、13934 行目の列 1 にあると教えても特に役に立たないようです。これを追い詰めるにはどうすればいいですか?エラーメッセージは驚くほど役に立ちません (そして、このテーマに関する他の多くの質問もここにあることに気付きました)。

  • 編集 -

意味はよくわかりませんが、RAILS_ENV=development rake assets:precompile私の開発マシンで実行すると、問題なくタスクが実行されるようです。私のサーバーは Ubuntu 12.04 で、私の開発マシンは OSX 10.8 です。私は今、これを自分で解決できるほど Javascript ランタイムについて十分に知りません (しかし、探しています)。

4

3 に答える 3

11

ほら、

キーボードにぶつけて頭が痛いのですが、問題は解決しました。

まず、周りを読んだところ、醜いものが私のエラーの原因であることが示唆されました。config / Production.rbに設定config.assets.compress = falseし、アセットをプリコンパイルできたことを確認しました。

私のJavascriptファイルは625kBであり、本当に圧縮したかったので、これには満足していませんでした。そこで、生成されたapplication.jsファイルを調べて、13934行1列目が参照しているものを見つけました。私が使用している小さなjQueryプラグインであるファイルjquery.caret.1.02.jsの8行1列目であることがわかりました。この最初の行はそのように見えます。

 (function($,len,createRange,duplicate){

線の前にスペースがあります。私はそのスペースを削除し(印刷されないユニコード文字が正しくないのではないかと思いますが、調べてみませんでした)、設定config.assets.compress = trueして再試行しましたが、エラーメッセージは表示されませんでした。(そして私のJavascriptは159kBまで下がっています)

これがいつか誰かに役立つことを願っています。

于 2012-11-28T11:37:19.237 に答える
1

別の理由として、js ファイル内の html スタイルのコメントが考えられます。

これにより生成されます

Unexpected character '<'

それを持ち出すためだけに、誰かの時間と手間を省くことを願っています

于 2013-03-14T05:43:28.767 に答える