Ruby on rails 轨道5 don';t在生产环境中使用ES6代码预编译JS文件

Ruby on rails 轨道5 don';t在生产环境中使用ES6代码预编译JS文件,ruby-on-rails,ecmascript-6,uglifier,Ruby On Rails,Ecmascript 6,Uglifier,我正在部署一个包含ES6代码的javascript应用程序 当我运行bundle exec rake assets:precompile RAILS\u ENV=production时,我得到了: ExecJS::RuntimeError: SyntaxError: Unexpected token: punc ()) 这是因为prueba.js具有以下功能: var greetings = () => { let saludo = 'tio'; console.log('sal

我正在部署一个包含ES6代码的javascript应用程序

当我运行bundle exec rake assets:precompile RAILS\u ENV=production时,我得到了:

ExecJS::RuntimeError: SyntaxError: Unexpected token: punc ())
这是因为prueba.js具有以下功能:

var greetings = () => {
  let saludo = 'tio';
  console.log('saludo' + saludo)
};
greetings();
丑八怪不认识ES6。为了解决这个问题,我安装并设置了gems:

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=production的情况下运行
rake assets:precompile
,那么如果使用uglifier(3.2.0),在使用ES6时不会出现错误 您可以更改production.rb文件


如果使用Uglifier(3.2.0),则在使用ES6时使用config.assets.js_compressor=Uglifier.new(harmony:true)

您可以更改production.rb文件


使用config.assets.js_compressor=Uglifier.new(harmony:true)

接受的答案到目前为止仍然有效,但在几天前进行捆绑包更新后,新版本execjs 2.8发布后,使用ES6和Uglifier压缩的预编译停止工作

错误:JSON::ParserError:439:在“{”代码“:/*!”处出现意外标记


为了使其再次工作,只需将execjs版本修改为2.7即可。目前为止,公认的答案仍然有效,但在几天前进行捆绑包更新后,新版本execjs 2.8发布后,使用ES6和uglifier压缩的预编译停止工作

错误:JSON::ParserError:439:在“{”代码“:/*!”处出现意外标记


要使其再次工作,只需将execjs的版本修改为2.7

我认为您需要将
.es6
添加到链轮的文件扩展名,以便通过babel运行JS。@max我更改了.es6扩展名,但我得到了其他错误:
execjs::RuntimeError:SyntaxError:“return”在函数之外
我认为您需要添加
.es6
到链轮的文件扩展名,以便通过babel运行JS。@max我更改为.es6扩展名,但我得到了其他错误:
ExecJS::RuntimeError:SyntaxError:“return”在函数之外运行了!
只需更新de-Uglifier版本,谢谢@adcostaApparly 3.2.0以上的版本仍然显示相同的错误,即使对我进行了更改如上所述..必须降级到3.2.0才能修复此问题..成功了!只需更新de-Uglifier版本,谢谢@adcostaApparently 3.2.0以上的版本仍然显示相同的错误,即使有上述更改..必须降级到3.2.0才能修复此问题..我刚刚升级到rails 5.1,解决的问题是将execjs升级到2.8.1I刚刚升级升级到rails 5.1,我的解决方案是将execjs升级到2.8.1