6

我有一些使用模板字符串的代码在开发中工作,但是推送到 Heroku 失败并出现以下错误:

 ExecJS::RuntimeError: SyntaxError: Unexpected character '`'

运行bundle exec rake assets:precompile RAILS_ENV=production显示同样的事情。

代码是这样的:

`1 + 1 is ${1 + 1}`

我想知道 Heroku Node 版本是否太低而无法支持这一点。我根本没有定制这个。只需使用默认配置推送 Rails 4 应用程序。

4

2 回答 2

11

我最终找到了这个线程:https ://github.com/browserify-rails/browserify-rails/issues/137

我在哪里找到了注释掉这条线的建议:

config.assets.js_compressor = :uglifier

问题是 'uglifier'(缩小器)在 ES6 语法中不能正常工作。

正如线程所提到的,使用此修复意味着脚本将不再被缩小,所以我仍然很好奇是否有更好的解决方案。

于 2017-01-08T20:32:12.590 回答
11

Uglifier 现在有实验性的 ES6 支持,但你必须先配置它:

config/environments/production.rb

代替

config.assets.js_compressor = :uglifier

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


但是,ES6 没有经过广泛的测试。使用 ES6 代码更稳定的替代方法是首先使用 babel-transpiler 转译为 ES5,或者使用 Closure Compiler 直接压缩 ES6 代码。

文档:https ://github.com/lautis/uglifier#user-content-es6--es2015--harmony-mode

于 2018-03-28T07:14:11.443 回答