Deploying Rails 6.0 to AWS EB, Webpacker requires Node.js 版本错误

Deploying Rails 6.0 to AWS EB, Webpacker requires Node.js version error

我正在尝试将最近从 rails 5.2 更新到 6 的 rails 应用程序上传到 AWS Elastic Beanstalk。我们有其他人在做这件事,但由于大流行,他不得不离开——现在我们的网站有点不稳定,我无法更新它。我已经搜索了我的问题的许多不同变体,但尚未找到有效的解决方案。

该应用程序在 rails 5.2 的 EB 上运行。我在本地有 6.0 的应用程序 运行。当我 eb deploy 我得到这个错误:

MacBook-Pro:app $ eb deploy
Starting environment deployment via CodeCommit
--- Waiting for Application Versions to be pre-processed ---
Finished processing application version app-0e294-200420_110159
2020-04-21 00:22:24    INFO    Environment update is starting.      
2020-04-21 00:23:07    INFO    Deploying new version to instance(s).
2020-04-21 00:27:59    ERROR   [Instance: i-0e613ac1fe175f3f6] Command failed on instance. Return code: 1 Output: (TRUNCATED)...-- : Writing /var/app/ondeck/public/assets/application-06fe3df6175ba0def3d0e732489f883d0c09de.css.gz
Webpacker requires Node.js ">=10.13.0" and you are using v6.17.1
Please upgrade Node.js https://nodejs.org/en/download/
Exiting!. 
Hook /opt/elasticbeanstalk/hooks/appdeploy/pre/11_asset_compilation.sh failed. For more detail, check /var/log/eb-activity.log using console or EB CLI.
2020-04-21 00:27:59    INFO    Command execution completed on all instances. Summary: [Successful: 0, Failed: 1].
2020-04-21 00:28:00    ERROR   Unsuccessful command execution on instance id(s) 'i-0e613ac1fe175f3f6'. Aborting the operation.
2020-04-21 00:28:00    ERROR   Failed to deploy application.        

ERROR: ServiceError - Failed to deploy application.

在此之前它给我一个捆绑器错误,我可以通过将文件添加到 .ebextensions 来修复,该文件安装了正确版本的捆绑器。我认为对此的解决方案是相似的。

这个 post 接近我的问题:

所以我根据选择的答案将此文件添加到我的 .ebextensions 中:

01_update_note.config

commands:
  01_download_nodejs:
    command: curl --silent --location https://rpm.nodesource.com/setup_10.x | sudo bash -
  02_install_nodejs:
    command: yum -y install nodejs

然而,它似乎没有做任何事情,我仍然得到同样的错误。我根据其他一些关于该问题的博客 post 尝试了该文件的几个变体,但错误仍然存​​在。有没有人能指出我正确的方向或提供对问题的任何见解?对于对 AWS 或 EB 还不是很熟悉,我深表歉意,但我会尽力回答其他问题。

可能是后来yarn install造成的。 我尝试了以下脚本并删除 yarn install 然后设置 RAILS_SKIP_ASSET_COMPILATION=false 它对我有用。

commands:
  01_install_yarn:
    command: "sudo wget https://dl.yarnpkg.com/rpm/yarn.repo -O /etc/yum.repos.d/yarn.repo && curl --silent --location https://rpm.nodesource.com/setup_12.x | sudo bash - && sudo yum install yarn -y"
  02_download_nodejs:
    command: curl --silent --location https://rpm.nodesource.com/setup_12.x | sudo bash -
  03_install_nodejs:
    command: yum -y install nodejs
  04_install_packages:
    command: sudo yum install -y yarn

这是我在亚马逊上做的 Linux 2:

.platform/hooks/prebuild/yarn_config.sh 中创建此文件:

#!/usr/bin/env bash

curl --silent --location https://rpm.nodesource.com/setup_16.x | sudo bash -
sudo yum -y install nodejs

sudo wget https://dl.yarnpkg.com/rpm/yarn.repo -O /etc/yum.repos.d/yarn.repo
sudo yum -y install yarn

yarn install

给它正确的权限:chmod +x .platform/hooks/prebuild/yarn_config.sh

并且错误消失了,而您的资产仍在编译(与接受的答案不同)