ExecJS :: ProgramError:SyntaxError:意外的标记:name <classname>

时间:2017-02-20 13:14:38

标签: javascript ruby-on-rails ruby precompile execjs

我创建了一个JavaScript类(名为BarChart),它有构造函数和几个init方法。

我执行以下命令为生产环境预编译资产但出错了。

用于预编译资产的命令:rake assets:precompile RAILS_GROUPS=assets --trace

错误回溯:

rake aborted!
ExecJS::ProgramError: SyntaxError: Unexpected token: name (BarChart) (line: 24472, col: 6, pos: 952834)

Error
    at new JS_Parse_Error (<eval>:3623:11948)
    at js_error (<eval>:3623:12167)
    at croak (<eval>:3623:22038)
    at token_error (<eval>:3623:22175)
    at unexpected (<eval>:3623:22263)
    at semicolon (<eval>:3623:22781)
    at simple_statement (<eval>:3623:25959)
    at <eval>:3623:23747
    at <eval>:3623:22954
    at <eval>:3624:3759
    at Object.parse (<eval>:3624:3999)
    at parse (<eval>:3958:22)

抛出错误的Javascript类写成:

class BarChart
{
    // code goes here
}

我在Gemfile中添加了therubyracerexecjs gem。

Ruby:2.2.5

Rails:3.2.2`

PS:我在SO中检查了此类问题,但没有一个问题与 JavaScript class 有关。

3 个答案:

答案 0 :(得分:1)

在rails 5中,我解决了将.js文件重命名为.js.es6的问题。奇怪的是,我的暂存部署工作正常,而我的生产部署却没有。

答案 1 :(得分:0)

在您的BarChart js文件中,将所有let更改为var。 然后预编译应该成功。

答案 2 :(得分:0)

我在ES6中编写了JavaScript,而rails 3在ES6代码时显示错误。在rails中使用ES6的所有方法都不适用于rails 3.所以我将ES6转换为ES5代码。