部署Rails 8+Vite应用到Railway时出现vite二进制文件不可用错误
修复Railway部署Rails+Vite时的Vite二进制文件缺失问题
核心原因
Railway部署环境默认未安装Node.js/npm,或构建流程未正确执行前端依赖安装、静态资源预编译操作,导致Rails无法调用Vite相关命令。
具体修复步骤
1. 配置Railway安装Node.js
在项目根目录创建railway.toml文件,指定Node.js版本与安装命令:
[build] installCommand = "nvm install 20 && npm install"
也可在package.json中声明Node版本,Railway会自动识别适配:
{ "engines": { "node": ">=20.0.0" } }
2. 调整部署构建命令
修改railway.toml,明确包含前端依赖安装与静态资源预编译步骤:
[build] buildCommand = "bundle install && npm install && rails assets:precompile"
或直接在Railway控制台的部署设置中,将构建命令替换为上述内容。
同时在config/application.rb中添加Vite manifest文件到预编译列表:
config.assets.precompile += %w( vite-manifest.json )
3. 校验Vite生产环境配置
确保config/vite.json的生产环境配置启用预编译模式:
{ "production": { "build_command": "npm run build", "public_output_dir": "public/vite", "manifest": true } }
并确认package.json中存在正确的build脚本:
{ "scripts": { "build": "vite build" } }
4. 指定Node/npm执行路径
若仍提示找不到npx,可在config/initializers/vite.rb中手动指定路径(路径需匹配Railway环境实际Node安装位置,可从部署日志中获取):
ViteRuby.configure do |config| config.node = "/usr/local/bin/node" config.npx = "/usr/local/bin/npx" end
5. 验证构建日志
部署时查看Railway构建日志,确认以下操作完成:
- Node.js与npm成功安装
npm install完成所有前端依赖下载rails assets:precompile触发Vite build,生成public/vite-manifest.json文件
内容的提问来源于stack exchange,提问作者Leandro Pinheiro Tavares




