ExecJS::ProgramError: SyntaxError: Неожиданный токен: имя <ClassName>

Я создал класс 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
}

я добавил therubyracer а также execjs драгоценный камень в Gemfile.

Ruby: 2.2.5

Rails: 3.2.2`

PS: я проверил несколько вопросов такого типа в SO, но ни одна из проблем не связана с JavaScriptclass,

3 ответа

Решение

Я написал JavaScript в ES6 и рельсы 3 показывает ошибку в то время как ES6 код. Все способы использования ES6 в рельсах не для рельсов 3. Поэтому я конвертировал ES6 в код ES5.

В вашем файле BarChart js измените все let в var, Тогда прекомпиляция должна пройти успешно.

В rails 5 я решил проблему с переименованием файлов из.js в.js.es6. Странно, но мое промежуточное развертывание сработало, а производственное развертывание - нет.

Другие вопросы по тегам