3

我使用 Rails 4.0.0,我做 rake assets:precompile on ENV - 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 的答案。事实证明,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 回答