1

我正在使用一些包含 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:

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 的情况下运行,我不会收到错误

4

2 回答 2

3

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

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

于 2017-12-06T11:39:16.147 回答
1

接受的答案一直有效,但是在几天前进行捆绑更新后,在新版本 execjs 2.8 发布后,使用 ES6 和 uglifier 压缩进行预编译停止工作。

错误:JSON::ParserError: 439: '{"code":"/*! ...

为了让它再次工作,只需将 execjs 的版本修复为 2.7

于 2021-05-13T11:05:45.563 回答