我有一些使用模板字符串的代码可以在开发中使用,但是对Heroku的推送失败了,出现了这个错误:
ExecJS::RuntimeError: SyntaxError: Unexpected character '`'
正在运行bundle exec rake assets:precompile RAILS_ENV=production
会显示同样的事情。
代码是这样的:
`1 + 1 is ${1 + 1}`
我想知道Heroku Node版本是否太低而无法支持。我根本没有定制这个。只需使用默认配置推送Rails 4应用程序。
答案 0 :(得分:9)
我最终找到了这个帖子:https://github.com/browserify-rails/browserify-rails/issues/137
我在哪里找到了注释掉该行的建议:
config.assets.js_compressor =:uglifier
问题是'uglifier'(缩小器)无法正常使用ES6语法。
正如线程所提到的,使用此修复意味着脚本将不再缩小,所以如果有更好的解决方案,我仍然会很好奇。
答案 1 :(得分:8)
Uglifier现在有实验性的ES6支持,但你必须先配置它:
config/environments/production.rb
中的
替换
config.assets.js_compressor = :uglifier
与
config.assets.js_compressor = Uglifier.new(harmony: true)
然而,ES6未经过广泛测试。使用ES6代码的更稳定的替代方案是首先使用例如ES5代码转换到ES5。 babel-transpiler或使用Closure Compiler直接缩小ES6代码。
文件:https://github.com/lautis/uglifier#user-content-es6--es2015--harmony-mode