質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

ただいまの
回答率

90.35%

  • Ruby on Rails

    9551questions

    Ruby on Railsは、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

  • AWS(Amazon Web Services)

    2730questions

    Amazon Web Services (AWS)は、仮想空間を機軸とした、クラスター状のコンピュータ・ネットワーク・データベース・ストーレッジ・サポートツールをAWSというインフラから提供する商用サービスです。

  • Ruby on Rails 4

    2566questions

    Ruby on Rails4はRubyによって書かれたオープンソースのウェブフレームワークです。 Ruby on Railsは「設定より規約」の原則に従っており、効率的に作業を行うために再開発を行う必要をなくしてくれます。

  • サーバ

    932questions

    サーバは、 クライアントサーバモデルにおいてクライアントからの要求に対し 何らかのサービスを提供するプログラムを指す言葉です。 また、サーバーソフトウェアを稼動させているコンピュータ機器そのもののことも、 サーバーと呼ぶ場合もあります。

AWS上でのRailsアプリのプレコンパイルエラー

解決済

回答 2

投稿 編集

  • 評価
  • クリップ 0
  • VIEW 1,224

yukkys

score 36

前提・実現したいこと

初のアプリを公開しようと、こちらのページ >>初心者向け:AWS(EC2)にRailsのWebアプリをデプロイする方法 ⑤を見ながら悪戦苦闘しています。ようやく、プレコンパイルというところまで来たのですが、エラーが起きてしまい、解決できないでいます。

プレコンパイルエラーを無視して、unicornの起動、該当urlにアクセスすると、画像非表示、cssの適用なしなので、表示は崩れてしまっていましたが、アクセスは可能でした。

発生している問題・エラーメッセージ

プレコンパイルエラー

エラーメッセージ

rake aborted!
ExecJS::RuntimeError: SyntaxError: Unexpected token: operator (*)
JS_Parse_Error.Object.defineProperty.get ((execjs):3538:621)

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Tasks: TOP => assets:precompile
(See full trace by running task with --trace)

該当のソースコード

bundle exec rake assets:precompile RAILS_ENV=production

試したこと

一旦unicornを停止させて、再度コマンド入力しましたがダメでした。
Rails 4.2以降: Rails+Unicorn で、publicディレクトリの中身が404になる場合の解決策の中に記載されていたconfig/environments/production.rbのconfig.serve_static_files = true の書き換えも試しましたが、エラー変わらず。
また、ローカルで同アプリに同じコマンドを打つと別のエラーが出ました。

rake aborted!
Devise.secret_key was not set. Please add the following to your Devise initializer:

補足情報(言語/FW/ツール等のバージョンなど)

より詳細な情報
Rails:4.2.6, AWS_EC2, RDS

jsファイル、jsの使用箇所を追記させて頂きます。
↓application.js

// This is a manifest file that'll be compiled into application.js, which will include all the files
// listed below.
//
// Any JavaScript/Coffee file within this directory, lib/assets/javascripts, vendor/assets/javascripts,
// or any plugin's vendor/assets/javascripts directory can be referenced here using a relative path.
//
// It's not advisable to add code directly here, but if you do, it'll appear at the bottom of the
// compiled file.
//
// Read Sprockets README (https://github.com/rails/sprockets#sprockets-directives) for details
// about supported directives.
//
//= require jquery
//= require jquery_ujs
//= require turbolinks
//= require bootstrap
//= require_tree .

//= require cocoon

↓index.html.erb 計算結果を表示するjs

<script type="text/javascript">
      $(function() {

        $('#form').submit(function(){

          var gender = $('#select-gender').val(); 
          var bw = $('#bw').val();
          var used_weight = $('#used_weight').val();

          if(gender == "0"){
            var a = -216.0475144;
            var b = 16.2606339;
            var c = -0.002388645;
            var d = -0.00113732;
            var e = 7.01863*(10**-6);
            var f = -1.291*(10**-8);
          }
          else{
            var a = 594.31747775582;
            var b = -27.23842536447;
            var c = 0.82112226871;
            var d = -0.00930733913;
            var e = 4.731582*(10**-5);
            var f = -9.054*(10**-8);
          }

          var fomula = 500 / (a + (b*bw) + (c*(bw**2)) + (d*(bw**3)) + (e*(bw**4)) + (f*(bw**5)));

          var wilks = fomula*used_weight;
          var wilks_m = wilks*100;
          var wilks_round = Math.round(wilks_m)/100;
          console.log(gender);
          $('#kekka').text(wilks_round);
          $('#result-display').show();

          return false;
        });
      });
    </script>

$ bundle exec rake assets:precompile RAILS_ENV=production --trace の表示結果

** Invoke assets:precompile (first_time)
** Invoke assets:environment (first_time)
** Execute assets:environment
** Invoke environment (first_time)
** Execute environment
** Execute assets:precompile
rake aborted!
ExecJS::RuntimeError: SyntaxError: Unexpected token: operator (*)
JS_Parse_Error.Object.defineProperty.get ((execjs):3538:621)
/var/www/projects/tranning/vendor/bundle/ruby/2.3.0/gems/execjs-2.7.0/lib/execjs/ruby_racer_runtime.rb:47:in `rescue in block in call'
/var/www/projects/tranning/vendor/bundle/ruby/2.3.0/gems/execjs-2.7.0/lib/execjs/ruby_racer_runtime.rb:44:in `block in call'
/var/www/projects/tranning/vendor/bundle/ruby/2.3.0/gems/execjs-2.7.0/lib/execjs/ruby_racer_runtime.rb:75:in `block in lock'
/var/www/projects/tranning/vendor/bundle/ruby/2.3.0/gems/execjs-2.7.0/lib/execjs/ruby_racer_runtime.rb:73:in `Locker'
/var/www/projects/tranning/vendor/bundle/ruby/2.3.0/gems/execjs-2.7.0/lib/execjs/ruby_racer_runtime.rb:73:in `lock'
/var/www/projects/tranning/vendor/bundle/ruby/2.3.0/gems/execjs-2.7.0/lib/execjs/ruby_racer_runtime.rb:43:in `call'
/var/www/projects/tranning/vendor/bundle/ruby/2.3.0/gems/uglifier-3.2.0/lib/uglifier.rb:195:in `run_uglifyjs'
/var/www/projects/tranning/vendor/bundle/ruby/2.3.0/gems/uglifier-3.2.0/lib/uglifier.rb:157:in `compile'
/var/www/projects/tranning/vendor/bundle/ruby/2.3.0/gems/sprockets-3.7.1/lib/sprockets/uglifier_compressor.rb:53:in `call'
/var/www/projects/tranning/vendor/bundle/ruby/2.3.0/gems/sprockets-3.7.1/lib/sprockets/uglifier_compressor.rb:28:in `call'
/var/www/projects/tranning/vendor/bundle/ruby/2.3.0/gems/sprockets-3.7.1/lib/sprockets/processor_utils.rb:75:in `call_processor'
/var/www/projects/tranning/vendor/bundle/ruby/2.3.0/gems/sprockets-3.7.1/lib/sprockets/processor_utils.rb:57:in `block in call_processors'
/var/www/projects/tranning/vendor/bundle/ruby/2.3.0/gems/sprockets-3.7.1/lib/sprockets/processor_utils.rb:56:in `reverse_each'
/var/www/projects/tranning/vendor/bundle/ruby/2.3.0/gems/sprockets-3.7.1/lib/sprockets/processor_utils.rb:56:in `call_processors'
/var/www/projects/tranning/vendor/bundle/ruby/2.3.0/gems/sprockets-3.7.1/lib/sprockets/loader.rb:134:in `load_from_unloaded'
/var/www/projects/tranning/vendor/bundle/ruby/2.3.0/gems/sprockets-3.7.1/lib/sprockets/loader.rb:60:in `block in load'
/var/www/projects/tranning/vendor/bundle/ruby/2.3.0/gems/sprockets-3.7.1/lib/sprockets/loader.rb:317:in `fetch_asset_from_dependency_cache'
/var/www/projects/tranning/vendor/bundle/ruby/2.3.0/gems/sprockets-3.7.1/lib/sprockets/loader.rb:44:in `load'
/var/www/projects/tranning/vendor/bundle/ruby/2.3.0/gems/sprockets-3.7.1/lib/sprockets/cached_environment.rb:20:in `block in initialize'
/var/www/projects/tranning/vendor/bundle/ruby/2.3.0/gems/sprockets-3.7.1/lib/sprockets/cached_environment.rb:47:in `load'
/var/www/projects/tranning/vendor/bundle/ruby/2.3.0/gems/sprockets-3.7.1/lib/sprockets/base.rb:66:in `find_asset'
/var/www/projects/tranning/vendor/bundle/ruby/2.3.0/gems/sprockets-3.7.1/lib/sprockets/base.rb:73:in `find_all_linked_assets'
/var/www/projects/tranning/vendor/bundle/ruby/2.3.0/gems/sprockets-3.7.1/lib/sprockets/manifest.rb:142:in `block in find'
/var/www/projects/tranning/vendor/bundle/ruby/2.3.0/gems/sprockets-3.7.1/lib/sprockets/legacy.rb:114:in `block (2 levels) in logical_paths'
/var/www/projects/tranning/vendor/bundle/ruby/2.3.0/gems/sprockets-3.7.1/lib/sprockets/path_utils.rb:228:in `block in stat_tree'
/var/www/projects/tranning/vendor/bundle/ruby/2.3.0/gems/sprockets-3.7.1/lib/sprockets/path_utils.rb:212:in `block in stat_directory'
/var/www/projects/tranning/vendor/bundle/ruby/2.3.0/gems/sprockets-3.7.1/lib/sprockets/path_utils.rb:209:in `each'
/var/www/projects/tranning/vendor/bundle/ruby/2.3.0/gems/sprockets-3.7.1/lib/sprockets/path_utils.rb:209:in `stat_directory'
/var/www/projects/tranning/vendor/bundle/ruby/2.3.0/gems/sprockets-3.7.1/lib/sprockets/path_utils.rb:227:in `stat_tree'
/var/www/projects/tranning/vendor/bundle/ruby/2.3.0/gems/sprockets-3.7.1/lib/sprockets/legacy.rb:105:in `each'
/var/www/projects/tranning/vendor/bundle/ruby/2.3.0/gems/sprockets-3.7.1/lib/sprockets/legacy.rb:105:in `block in logical_paths'
/var/www/projects/tranning/vendor/bundle/ruby/2.3.0/gems/sprockets-3.7.1/lib/sprockets/legacy.rb:104:in `each'
/var/www/projects/tranning/vendor/bundle/ruby/2.3.0/gems/sprockets-3.7.1/lib/sprockets/legacy.rb:104:in `logical_paths'
~~~~~~~~~~~~文字数制限で以下略~~~~~~~~~~~~~~~~~~~~~~~~

↓ wilks.js削除後のプリコンパイルエラー 見た所、{が合ってないとかはなさそうですが・・・。

rake aborted!
Sass::SyntaxError: Invalid CSS after "1215 ": expected "{", was "}"
(sass):268


bootstrap.css 1215付近

  • 気になる質問をクリップする

    クリップした質問は、後からいつでもマイページで確認できます。

    またクリップした質問に回答があった際、通知やメールを受け取ることができます。

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

質問への追記・修正、ベストアンサー選択の依頼

  • k-motoyan

    2017/07/25 09:05

    Javascriptのコードにエラーがあるという内容のようなので、差し障りないようでしたらJavascriptのコードも載せていただけると回答し易いかと思います。

    キャンセル

回答 2

checkベストアンサー

0

詳細なコードの追記ありがとうございます。

おそらく、javascriptのコードの中でべき乗を計算する時に**を利用していることが原因かと思います。

asset:precompileの中でUglifyというツールが利用されています。
このツールはJavascriptやCSSを圧縮・結合してファイルサイズを小さくしてくれる機能を提供してくれるのですが、
Javascriptのシンタックスの対応バージョンがES2015までとなっています。

今回問題になっている**演算子はES2016の機能となりますので、エラーになっているものと考えられます。
(べき乗の計算にはMath.powを利用するようにすれば良いはずです。)

ただ、一つ気になるのはこのコードがindex.html.erbの中に記載されている?というように読み取れます。

asset:precompileが対象とするのは、[your-app]/assets/javascriptslib/assets/javascriptsvendor/assets/javascriptsだけなのです。

index.html.erbの中に記載されているはasset:precompileの対象外となるはずです。

コードを修正してみてもうまく動作しない場合は以下の点を疑ってみてください。

  • 他にJavascriptのコードがないかどうか?
  • Rails.application.config.assets.pathsにパスが追加されていないかどうか?

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2017/07/25 16:16

    ヴァージョン違いでプリコンパイルエラーになる可能性もあるんですね…!
    おっしゃる通り、計算結果を出力するjs部分はビューファイルに直書きしてあります。
    もともとはassets/javascripts/wilks.jsにいれていたのですが、jsに慣れていないためか、動作がうまくいかなかたため止むおえず。
    そのまま使用しないwilks.jsが原因なのかと思い、削除して、gitのクローンからやり直して再度プリコンパイルをしたところ、違うエラー文になったため、確かにそのjsファイルが原因だったようです。

    ** Invoke assets:precompile (first_time)
    ** Invoke assets:environment (first_time)
    ** Execute assets:environment
    ** Invoke environment (first_time)
    ** Execute environment
    ** Execute assets:precompile
    rake aborted!
    Sass::SyntaxError: Invalid CSS after "1215 ": expected "{", was "}"
    (sass):268

    cssファイルの1215行目付近ですね。bootstrap.cssのだとは思いますが、ぱっと見問題なさそうなんですが、削除したりして試してみます!ありがとうございました!

    キャンセル

  • 2017/07/26 21:25

    ローカルでも、AWS上でもプリコンパイルできました!
    Syntax Errorも、application.css、bootstrap.cssを修正することで、プリコンパイルが通りました。
    ありがとうございました!

    キャンセル

0

以下追加してみてください。

設定値はrake secretで表示された値を設定してください。

vim {rails_root}/config/initializers/devise.rb
-------------------------------------------------------
Devise.setup do |config|
...
  config.secret_key = '**********************'
...
end

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2017/07/25 14:35

    一点確認したいのですが、今回AWSで公開したいとの事ですが、ローカルではプリコンパイルはうまく行ってるのでしょうか?

    キャンセル

  • 2017/07/25 16:48

    最初にエラーが出た時に、ローカルでもプリコンパイルをしてみようという記事があったので、やってみたところ、deviseのsecret_key部分のエラーが出ました。そこで、ローカルでもaws上でもsecret_keyをそれぞれいれて、再度プリコンパイルしてもエラー文変わりませんでした。

    そこで、k-motoyanさんのおっしゃっていたjsファイルの部分を削除し、再度gitのクローンからやり直して、プリコンパイルをしたところ、エラー文の変更がありました。この部分は質問文に追記しておきました。css部分の{ の数だと思うので、先ほどよりかは問題は浅くなったのかなと思っています。ぱっと見1215あたりでは見つからないのですが、周辺で探してみます!ありがとうございました!

    キャンセル

  • 2017/07/26 21:27

    ローカルでも、AWS上でもプリコンパイルできました!
    Syntax Errorも、application.css、bootstrap.cssを修正することで、プリコンパイルが通りました。
    ありがとうございました!
    ローカルでもプリコンパイルできることを初めて知りました。

    キャンセル

15分調べてもわからないことは、teratailで質問しよう!

  • ただいまの回答率 90.35%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる

同じタグがついた質問を見る

  • Ruby on Rails

    9551questions

    Ruby on Railsは、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

  • AWS(Amazon Web Services)

    2730questions

    Amazon Web Services (AWS)は、仮想空間を機軸とした、クラスター状のコンピュータ・ネットワーク・データベース・ストーレッジ・サポートツールをAWSというインフラから提供する商用サービスです。

  • Ruby on Rails 4

    2566questions

    Ruby on Rails4はRubyによって書かれたオープンソースのウェブフレームワークです。 Ruby on Railsは「設定より規約」の原則に従っており、効率的に作業を行うために再開発を行う必要をなくしてくれます。

  • サーバ

    932questions

    サーバは、 クライアントサーバモデルにおいてクライアントからの要求に対し 何らかのサービスを提供するプログラムを指す言葉です。 また、サーバーソフトウェアを稼動させているコンピュータ機器そのもののことも、 サーバーと呼ぶ場合もあります。