ruby-on-rails ES6语法,必须使用Uglifier.new(:harmony => true启用harmony模式

lnvxswe2  于 2023-06-25  发布在  Ruby
关注(0)|答案(4)|浏览(101)

我正面临这个问题
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)版本

6jjcrrmo

6jjcrrmo1#

我也把答案留在这里:
config/environments/production.rb中替换

config.assets.js_compressor = :uglifier

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

w1e3prcc2#

在Rails 6.1中,我通过以下方式解决了这个问题:
1.从Gemfile中删除uglifier gem。
1.删除config/environments/production.rbconfig/environments/development.rb中的config.assets.js_compressor条目。
参考号:https://www.mintbit.com/blog/rails-5-6-upgrade-es6-uglifier-bug

pbpqsu0x

pbpqsu0x3#

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

gywdnpxw

gywdnpxw4#

升级到5.2到6.1会遇到此问题

我修复了这个问题,用 terser 替换 uglifier js_compressor
config/environments/production.rb替换

gem 'uglifier' # remove gem from Gemfile
config.assets.js_compressor = :uglifier
or
config.assets.js_compressor = Uglifier.new(harmony: true)

gem 'terser' # add gem in Gemfile
config.assets.js_compressor = :terser

相关问题