You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在64位Amazon Linux 2的Elastic Beanstalk Python3.7环境安装Node

问题原因

你通过nvm安装的Node仅将执行路径写入了root用户的.bashrc配置文件,该配置仅会在交互式shell登录时加载。而Elastic Beanstalk执行container_commands时使用的是非交互式shell,不会加载用户目录下的bash配置,因此默认PATH中没有nvm管理的Node二进制路径,导致调用cssmin、terser时找不到node命令。

解决方案

以下两种方案任选其一即可:

方案1:将Node二进制软链接到系统全局路径

该方案可以让所有脚本都能直接调用node命令,适用范围更广。修改你的.ebextensions配置中的安装Node命令,安装完成后添加软链接步骤:

commands:
  05_install_node:
    command: |
      curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.34.0/install.sh | bash
      export NVM_DIR="/root/.nvm"
      [ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh"
      nvm install node
      # 软链接到系统默认PATH包含的目录
      ln -sf $(which node) /usr/local/bin/node
      ln -sf $(which npm) /usr/local/bin/npm

方案2:执行collectstatic前手动加载nvm环境

如果不想全局暴露node,可直接修改collectstatic的执行命令,在运行Django命令前先加载nvm配置:

container_commands:
    ...
    07_collectstatic:
        command: >
          export NVM_DIR="/root/.nvm" && 
          [ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh" &&
          source /var/app/venv/*/bin/activate && 
          python3 manage.py collectstatic --noinput
验证

可新增一个临时的container command确认node是否能被正常识别:

container_commands:
  06_test_node:
    command: "node -v"

如果该命令执行成功输出Node版本号,说明配置生效。


内容的提问来源于stack exchange,提问作者Jarad

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.04 14:57:04