Rails 6部署失败:SSHKit命令报错,JavaScript资源编译失败如何解决?
Rails 6部署时JavaScript资源编译失败的解决方法
1. 获取完整编译错误详情
当前日志未输出具体编译失败原因,需手动在服务器执行预编译命令查看完整错误:
- 登录部署服务器:
ssh deploy@16.17.18.2 - 切换至应用根目录:
cd /path/to/your/rails/application - 设置生产环境变量:
export RAILS_ENV=production - 执行带追踪的预编译命令:
bundle exec rake assets:precompile --trace
此命令会输出具体报错信息,是定位问题的关键。
2. 排查Webpacker相关问题
Rails 6依赖Webpacker处理JS资源,常见问题点:
- 检查
config/webpacker.yml中生产环境配置,确保public_output_path等路径与部署环境匹配 - 修复依赖冲突:删除旧依赖文件后重新安装
rm -rf node_modules yarn.lock yarn install --production - 确认Webpack版本兼容性:Rails 6对应的Webpacker版本通常为4.x,避免使用过高版本的
webpack或webpack-cli
3. 检查前端资源语法错误
- 排查所有新增/修改的JS、CSS、前端组件文件,确认无语法错误(如ES6转译问题、拼写错误)
- 若使用Vue/React等框架,检查组件模板、脚本是否符合语法规范
4. 清理旧资产文件
残留的旧编译文件可能导致冲突,执行清理后重新编译:
# 服务器端执行 bundle exec rake assets:clobber bundle exec rake assets:precompile
5. 确认部署用户权限
确保deploy用户对资产目录有读写权限:
chown -R deploy:deploy /path/to/your/rails/application/public/assets chmod -R 755 /path/to/your/rails/application/public/assets
6. 检查Node.js版本兼容性
Rails 6要求Node.js版本≥12.x,确认服务器版本:node -v,若版本过低,升级至兼容的LTS版本(如14.x)
内容的提问来源于stack exchange,提问作者Jerome
相关产品推荐
相关产品推荐

