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. Странно, но мое промежуточное развертывание сработало, а производственное развертывание - нет.