You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Rails Gem Uglifier 4.2不支持async/await的解决办法

问题分析与解决方案

你遇到的Uglifier::Error: Unexpected token: operator (=)错误,根源并非单纯的async/await兼容问题,而是代码中使用的类公共字段语法(loadAsync = async (targetElement, num) => {})属于ES2022特性,旧版UglifyJS(包括Uglifier 4.2内置的版本)对该特性支持不足,即使开启harmony: true也无法正确解析。

解决步骤

1. 升级Uglifier gem到最新版本

Uglifier 4.3.0及以上版本内置了更新的UglifyJS,对ES2022+特性的支持更完善。修改你的Gemfile:

gem 'uglifier', '>= 4.3.0'

执行命令更新依赖:

bundle update uglifier

2. 调整Uglifier配置,明确指定ECMA版本

升级后,在config/environments/production.rb中为Uglifier指定ECMA版本为2022,确保它能正确解析类字段语法:

config.assets.js_compressor = Uglifier.new(
  harmony: true,
  mangle: false,
  ecma: 2022
)

3. 备选方案:替换为Terser(对新ES特性更友好)

如果Uglifier仍无法满足需求,可以改用Terser——它是UglifyJS的分支,对现代JS特性支持更全面:

  • 修改Gemfile:
gem 'terser', '~> 1.0'
  • 更新依赖:
bundle install
  • 调整配置:
config.assets.js_compressor = Terser.new(mangle: false)

额外说明

UglifyJS 3.x版本已解决async/await的兼容问题,但类公共字段是ES2022才纳入标准的特性,需要UglifyJS 3.10及以上版本支持,而Uglifier 4.2内置的UglifyJS版本可能未达到该要求,因此升级gem或切换工具是最直接的解决方式。

内容的提问来源于stack exchange,提问作者MDickten

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.21 16:05:18