Rails 6+Tailwind应用部署AWS ElasticBeanstalk因Node.js依赖失败求助
问题根因
- 命令执行顺序错误:现有配置先执行Yarn安装,再执行Node.js安装,Yarn的RPM包依赖Node.js环境,安装时未检测到对应依赖直接报错。
- 命令冗余问题:
01_install_yarn中已经执行了NodeSource源的配置,后续单独的02_install_nodejs属于冗余步骤,且顺序颠倒放大了依赖问题。 - Node版本适配问题:原有配置使用的Node.js 12.x版本无法适配新版Tailwind CSS的运行要求,容易引发后续前端构建报错。
修复方案
第一步:调整01_rails_deploy.config的commands配置
commands: 00_remove_old_node_if_present: command: "/bin/rm -rf /var/cache/yum && /usr/bin/yum remove -y nodejs && /bin/rm /etc/yum.repos.d/nodesource* && /usr/bin/yum clean all" ignoreErrors: true 01_add_nodejs_repo: command: "curl --silent --location https://rpm.nodesource.com/setup_16.x | sudo bash -" 02_install_nodejs: command: "sudo yum -y install nodejs" 03_add_yarn_repo: command: "sudo wget https://dl.yarnpkg.com/rpm/yarn.repo -O /etc/yum.repos.d/yarn.repo" 04_install_yarn: command: "sudo yum install yarn -y" 05_mkdir_webapp_dir: command: "mkdir /home/webapp" ignoreErrors: true 06_chown_webapp_dir: command: "chown webapp:webapp /home/webapp" ignoreErrors: true 07_chmod_webapp_dir: command: "chmod 0744 /home/webapp" ignoreErrors: true
上述配置的调整逻辑:
- 调整命令执行顺序,先配置Node.js源、安装Node.js,再配置Yarn源、安装Yarn,符合依赖安装逻辑
- 升级Node.js版本到16.x,适配Tailwind CSS v3+的最低运行要求
- 拆分原有耦合的多命令逻辑,便于后续单步定位错误
第二步:补充Rails + Tailwind场景适配配置(可选)
- 在项目根目录新增
.npmrc文件,添加配置unsafe-perm=true,避免EBS构建时前端依赖安装出现权限报错 - 确认
package.json中存在build命令,对应Tailwind CSS的构建逻辑,Rails资产预编译阶段会自动调用该命令完成样式构建
第三步:重新触发部署
修改配置后提交代码触发CodePipeline运行即可,若仍有报错可登录对应EC2实例查看/var/log/eb-activity.log获取完整报错信息。
内容的提问来源于stack exchange,提问作者Gerard
相关产品推荐
相关产品推荐

