Rails 5 不要在生产中使用 ES6 代码预编译 JS 文件

Rails 5 don't precompile JS files with ES6 code in production

我正在部署一个包含 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。为了解决这个问题,我安装并设置了 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'

注意:如果我 运行 rake assets:precompile 没有 RAILS_ENV=production,我不会得到错误

使用ES6时,如果使用uglifier (3.2.0) 你可以更改文件 production.rb

with config.assets.js_compressor = Uglifier.new(和谐:真)

接受的答案到目前为止有效,但在几天前进行捆绑更新后,新版本 execjs 2.8 发布后,使用 ES6 和丑化器压缩停止工作。

错误:JSON::ParserError:439:'{"code":"/*! 处的意外标记...

要使其再次运行,只需将 execjs 的版本修复为 2.7