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

生产环境执行rake assets:precompile时ES6语法致资产管道失败

解决Rails生产环境资产预编译的ES6语法错误

你遇到的Uglifier::Error: Unexpected token: punc (()错误,核心原因是生产环境下Uglifier默认不支持ES6语法,而开发环境要么未开启JS压缩,要么配置了宽松的处理逻辑,所以不会触发该问题。

修复步骤:

  1. 启用Uglifier的Harmony模式
    打开config/environments/production.rb,找到或添加JS压缩器配置,修改为:
config.assets.js_compressor = Uglifier.new(harmony: true)

Harmony模式会让Uglifier支持ES6及以上的语法特性。

  1. 确保Uglifier版本兼容
    检查Gemfile中的uglifier版本,建议使用支持Harmony模式的4.1.0及以上版本,示例配置:
gem 'uglifier', '>= 4.1.0'

执行bundle install更新依赖。

  1. 重新预编译资产
    运行以下命令验证修复效果:
rake assets:precompile RAILS_ENV=production

如果你的项目已迁移到Webpacker(Rails 5.1+默认支持),也可以考虑用Webpack处理ES6代码——这是更现代的前端资产管理方案,但上述方法足以解决传统资产管道下的ES6兼容问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.02 07:20:41