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

含Webpack的Rails应用部署至Heroku出现tapPromise未定义错误如何解决

问题根因

该报错的核心是 compression-webpack-plugin 版本与 Webpack 版本不兼容:

  • Rails Webpacker 5.x 内置依赖的是 Webpack 4
  • compression-webpack-plugin v6 及以上版本仅支持 Webpack 5,processAssets 是 Webpack 5 才新增的钩子API,Webpack 4 环境下调用自然会报 undefined 错误
  • 你在 package.json 的 resolutions 配置里强制指定了 compression-webpack-plugin: >=4.0.0,会自动拉取最新的高版本插件,直接触发了兼容性问题

可行解决方案

  • 第一步:修改 package.json 中的 resolutions 配置,将 compression-webpack-plugin 版本锁定在兼容 Webpack4 的最后一个稳定版本
    把原配置中的
    "compression-webpack-plugin": ">=4.0.0",
    
    修改为
    "compression-webpack-plugin": "^4.0.1",
    
  • 第二步:清空本地依赖缓存和 lock 文件,重新安装依赖
    若使用 yarn 包管理:
    rm -rf node_modules yarn.lock
    yarn install
    
    若使用 npm 包管理:
    rm -rf node_modules package-lock.json
    npm install
    
  • 第三步:本地先验证打包功能是否正常
    bundle exec rails assets:precompile
    
    确认本地打包无报错后,重新推送到 Heroku 部署即可。

后续你升级到 Webpacker 6.x 版本(内置 Webpack 5)后,再将 compression-webpack-plugin 版本升级到最新版即可正常使用。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 10:36:03