我正在使用包含ES6代码的一些javascript部署应用程序。
当我运行bundle exec rake assets:precompile RAILS_ENV=production
时,我得到了:
ExecJS::RuntimeError: SyntaxError: Unexpected token: punc ())
这是因为prueba.js具有以下内容:
var greetings = () => {
let saludo = 'tio';
console.log('saludo' + saludo)
};
greetings();
而Uglify不承认ES6。为了解决这个问题,我安装并设置了宝石:
gem 'sprockets-es6', '~> 0.9.2'
gem 'babel-transpiler', '~> 0.7.0'
但是没有用,
在application.rb中,我有:
require "action_view/railtie"
require "sprockets/railtie"
# require "rails/test_unit/railtie"
require 'sprockets/es6'
注意:如果我在没有RAILS_ENV =生产的情况下运行rake assets:precompile
,我就不会收到错误
答案 0 :(得分:2)
使用ES6时,如果使用uglifier(3.2.0) 你可以改变文件production.rb
with config.assets.js_compressor = Uglifier.new(harmony:true)
答案 1 :(得分:1)
接受的答案到目前为止有效,但在几天前进行捆绑更新后,使用 ES6 进行预编译和 uglifier 压缩在新版本 execjs 2.8 发布后停止工作。
错误: JSON::ParserError: 439: '{"code":"/*! ...
为了让它再次工作只需将 execjs 的版本修复为 2.7