3

私は Rails 4.0.0 を使用しています。ENV で assets:precompile をレーキします - production で、いくつかのエラー メッセージが表示されます。

rake aborted!
Unexpected token operator «=», expected punc «,» (line: 15816, col: 39, pos: 465171)
Error
at new JS_Parse_Error (/tmp/execjs20130828-23982-1kgxmyu.js:2357:10736)
at js_error (/tmp/execjs20130828-23982-1kgxmyu.js:2357:10955)
at croak (/tmp/execjs20130828-23982-1kgxmyu.js:2357:18665)
at token_error (/tmp/execjs20130828-23982-1kgxmyu.js:2357:18802)
at expect_token (/tmp/execjs20130828-23982-1kgxmyu.js:2357:19025)
at expect (/tmp/execjs20130828-23982-1kgxmyu.js:2357:19163)
at /tmp/execjs20130828-23982-1kgxmyu.js:2357:23402
at /tmp/execjs20130828-23982-1kgxmyu.js:2357:23466
at /tmp/execjs20130828-23982-1kgxmyu.js:2357:20786
at /tmp/execjs20130828-23982-1kgxmyu.js:2357:19536
(in ~/RubymineProjects/Hermes/app/assets/javascripts/application.js.erb)        ~/.rvm/gems/ruby-1.9.3-p448/gems/execjs-1.4.0/lib    /execjs/external_runtime.rb:68:in `extract_result'

この構成ではエラーが発生します: function searchHelper(myMap,coords, cond=false ) ただし、デフォルトの引数がないとコマンドは終了コードなしで終了します: function searchHelper(myMap,coords, cond )

それは何ですか?それについてどこで読むことができますか?

4

2 に答える 2

5

他の誰かがこの問題に遭遇した場合は、関数の引数にデフォルト値を設定した可能性がありますが、これは JavaScript コードでは不可能です。

無効

function hello(param = true){
  ...
}

有効

function hello(param) {
  if (typeof param == 'undefined')
    param = true;

  ...
}
于 2014-02-06T08:59:32.930 に答える
1

これは数年前に回答されたことを知っていますが、バージョン 3.2 の Rails アプリケーションを使用していて、最近この問題に遭遇しました。Tomáš Dundáček's Answerに追加したいと思います。Javascript のデフォルト パラメータは次の形式であることがわかります。

function hello(param = true) {
    ...
}

は ES6 構文機能であり、ES5 では使用できません。上で述べたように、

function hello(param) {
    if (typeof param == 'undefined')
        param = true;
    // or
    param = param || true;

    ...
}

ES5で有効です。プリコンパイル時に使用する JavaScript ライブラリ (uglify-js など) によっては、JavaScript ファイルが正しくコンパイルされない場合があります。ライブラリが ES5 のみを理解する場合、ES6 機能を含めると、プリコンパイル中にこのエラーや同様のエラーが発生します。この問題については、Github のこのスレッドで詳しく説明しています。

于 2018-12-04T21:31:08.550 に答える