ES6 语法,和声模式必须启用 Uglifier.new(:harmony => true

Ash*_*kar 27 ruby ruby-on-rails uglifier

我正面临这个问题

Uglifier::Error: Unexpected token: keyword (const). To use ES6 syntax, harmony mode must be enabled with Uglifier.new(:harmony => true). 在生产中通过 capistrano 部署项目时。

我遵循了这个解决方案

https://github.com/lautis/uglifier/issues/127#issuecomment-352224986

这表明

替换

config.assets.js_compressor = :uglifier

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

但即使这样做了,我仍然面临同样的错误。我不明白出了什么问题。我正在使用uglifier (4.1.20)版本

Sri*_*tam 59

也只是在这里留下答案:

config/environments/production.rb替换

config.assets.js_compressor = :uglifier
Run Code Online (Sandbox Code Playgroud)

config.assets.js_compressor = Uglifier.new(harmony: true)
Run Code Online (Sandbox Code Playgroud)


mam*_*oha 7

Uglifier仅适用于 ES5。如果需要压缩 ES6,ruby-terser是更好的选择。


Edu*_*ant 7

在 Rails 6.1 上,我设法通过以下方式解决了这个问题:

  1. uglifier从 中取出宝石Gemfile
  2. 删除和config.assets.js_compressor中的条目 。config/environments/production.rbconfig/environments/development.rb

参考: https: //www.mintbit.com/blog/rails-5-6-upgrade-es6-uglifier-bug

  • 注意:只有当您将应用程序升级为使用 Webpacker(Rails 6 中的默认资源编译器)而不是 sprocket 时,这才是有效的解决方案。 (2认同)