【问题标题】:Deploy rails react app with webpacker gem on AWS elastic beanstalk在 AWS 弹性 beantalk 上使用 webpacker gem 部署 rails react 应用程序
【发布时间】:2018-07-25 17:08:42
【问题描述】:

我正在尝试使用 AWS Elastic Beanstalk 部署使用 webpacker gem 创建的 rails 5.1 & react 应用程序。问题是我不断收到以下错误:

Webpacker requires Node.js >= 6.0.0 and you are using 4.6.0

我在我的计算机上使用 Node 9.5.0。有什么建议吗??

【问题讨论】:

    标签: ruby-on-rails amazon-elastic-beanstalk webpacker


    【解决方案1】:

    使用 yum 安装 nodejs(假设您使用的是默认的 Amazon Linux)

    https://nodejs.org/en/download/package-manager/#enterprise-linux-and-fedora

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

    现在要在您的实例上执行此操作,您需要将所需的命令添加到 .ebextensions 目录内的配置文件中,例如:.ebextensions/01_install_dependencies.config

    文件内容:

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

    【讨论】:

    • 关于这个的问题。我有默认的.elasticbeanstalk 文件夹是.ebextensions 一个完全不同的文件夹?
    • @SimonCooper 是的,.elasticbeanstalk 文件夹包含本地 eb CLI 环境和其他内容的配置
    • 您也可以通过 ssh 进入实例并使用 sudo 执行这些命令:在控制台中输入 eb ssh
    • @Borzh 正如您通过 ssh 登录到 eb 实例时所说:Changes made via SSH WILL BE LOST if the instance is replaced by auto-scaling.
    【解决方案2】:

    对于那些还需要安装 Yarn 的人,我发现以下内容对我很有效:

    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_6.x | sudo bash - && sudo yum install yarn -y"
      02_download_nodejs:
        command: curl --silent --location https://rpm.nodesource.com/setup_8.x | sudo bash -
      03_install_nodejs:
        command: yum -y install nodejs
    

    【讨论】:

      【解决方案3】:

      对于那些在升级到 Rails 6 时发现此问题的人,I wrote a post 了解如何修复它。

      基本上,您必须:

      • 在应用程序的顶层创建目录 .ebextensions
      • 创建 .config 文件,其中包含修复部署的命令(此处为脚本)
        • 添加将 nodejs 升级到 >=6.14.4 的命令
        • 添加容器命令以安装 webpack 和预编译资产
      • 通过弹性豆茎禁用资产构建
        • 将 RAILS_SKIP_ASSET_COMPILATION 设置为 True

      这相当于:

      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_6.x | sudo bash - && sudo yum install yarn -y"
        02_download_nodejs:
          command: curl --silent --location https://rpm.nodesource.com/setup_8.x | sudo bash -
        03_install_nodejs:
          command: yum -y install nodejs
      
      container_commands:
      
        04_install_webpack:
          command: npm install --save-dev webpack
        05_precompile:
          command: bundle exec rake assets:precompile
      

      【讨论】:

      • 我收到一条错误消息,上面写着error @rails/webpacker@4.2.0: The engine "node" is incompatible with this module. Expected version ">=8.16.0". Got "6.17.1"。我认为 Rails Webpacker 需要一个比8.16.0 更好的版本。我更新了设置脚本(在您的 01 和 02 步骤中)以使用 setup_13.x。不知道为什么,但日志仍然告诉我我正在使用 Node 6.x 并且需要 8.x+
      • 也许将command: "yum clean all" 添加到03_install_nodejs:
      猜你喜欢
      • 2014-11-29
      • 2018-03-26
      • 2020-11-25
      • 2017-01-13
      • 2016-01-11
      • 2013-12-31
      • 2016-11-29
      • 2016-02-26
      • 2013-11-20
      相关资源
      最近更新 更多