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

将带Webpacker的Rails应用部署至Heroku失败求助

解决Rails 5.1.5 + Webpack 3.11.0部署时Webpack命令找不到的问题

环境信息

  • Rails 5.1.5
  • webpack 3.11.0

报错内容

remote: Webpacker已安装 🎉 🍰
remote: 使用/tmp/build_a60546bb726d2fa7f4b8b4ac052f461e/config/webpacker.yml文件配置webpack路径
remote: 编译中…
remote: 编译失败:
remote: bundler: 无法加载命令: webpack (/tmp/build_a60546bb726d2fa7f4b8b4ac052f461e/vendor/bundle/ruby/2.3.0/bin/webpack)
remote: Errno::ENOENT: 没有该文件或目录 - /tmp/build_a60546bb726d2fa7f4b8b4ac052f461e/node_modules/.bin/webpack

我之前部署Rails项目时也踩过这个webpacker的坑,结合你的情况,给你几个靠谱的解决方向:

  • 确保部署流程里执行了npm/yarn安装依赖
    这个错误最常见的原因就是部署时跳过了Node.js依赖的安装。Webpacker依赖本地安装在node_modules里的webpack,而不是全局的。你需要在部署脚本里,在bundle install之后加上npm install --production(用yarn的话就是yarn install --production),确保所有Node依赖都被正确安装到部署目录的node_modules下。

  • 核对webpacker.yml里的webpack路径配置
    错误提示里已经说明用了/tmp/.../config/webpacker.yml来配置webpack路径,你需要打开这个文件,找到webpack相关的配置项,确认它指向的是本地的webpack可执行文件:

    webpack: ./node_modules/.bin/webpack
    

    别写错成全局的webpack路径(比如/usr/bin/webpack),否则bundler会找不到本地的命令。

  • 检查Webpacker和webpack的版本兼容性
    Rails 5.1.5对应的Webpacker版本应该是3.x系列,如果你用的Webpacker版本太高,可能会和webpack 3.11.0不兼容。可以在Gemfile里锁定Webpacker的版本:

    gem 'webpacker', '~> 3.5'
    

    然后重新执行bundle install,再删除node_modules重新安装npm依赖:rm -rf node_modules && npm install。

  • 清理缓存后重新构建
    有时候部署缓存会导致依赖缺失,你可以在部署前先清理Rails的tmp缓存:rails tmp:clear,同时清理Node的缓存:npm cache clean --force,然后重新执行依赖安装和编译步骤。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.25 07:14:34