gpt4 book ai didi

bash - AWS CodeDeploy [标准错误]/usr/bin/env : node: No such file or directory

转载 作者:行者123 更新时间:2023-12-05 04:55:38 26 4
gpt4 key购买 nike

当尝试在 AfterInstall 事件上运行脚本时,我收到:

LifecycleEvent - AfterInstall
Script - deploy/install_dependencies.sh
[stdout]Install dependencies. /
[stderr]/usr/bin/env: node: No such file or directory

,这很奇怪,因为:

  1. 哪个节点产生:~/.nvm/versions/node/v15.2.0/bin/node
  2. 哪个 npm 产生:~/.nvm/versions/node/v15.2.0/bin/npm

appspec.yml 不是我设置的,但我认为它很简单:

version: 0.0
os: linux
files:
- source: /
destination: /home/ec2-user/deploy/
permissions:
- object: /
pattern: "**"
owner: ec2-user
hooks:
AfterInstall:
- location: deploy/install_dependencies.sh
- location: deploy/build.sh
- location: deploy/install_prd_dependencies.sh
- location: deploy/copy_overwrite.sh
# - location: deploy/migrations.sh
timeout: 300
runas: ec2-user
ApplicationStart:
- location: deploy/start_server.sh
timeout: 300
runas: ec2-user

我在阅读以下内容后添加了 runas: ec2-userpermissions 键及其值:Start Node Application in AfterInstall Hook ,虽然不是同一个问题,但似乎可以解决我的问题,但事实并非如此。

我检查了 nvm 是否安装了 which nvm,它没有工作:

[ec2-user@my-ip ~]$ which nvm
/usr/bin/which: no nvm in (/home/ec2-user/.nvm/versions/node/v15.2.0/bin:/usr/local/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/home/ec2-user/.local/bin:/home/ec2-user/bin)

但是,仅发布 nvm 我收到了 nvm 的 CLI 帮助命令,没有任何问题。

我检查了 ec2-user.bashrc 以查看 nvm 是否被正确导出(如本 answer 中所建议):

# User specific aliases and functions

export NVM_DIR="$HOME/.nvm"
[ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh" # This loads nvm
[ -s "$NVM_DIR/bash_completion" ] && \. "$NVM_DIR/bash_completion" # This loads nvm bash_completion

所有脚本都使用 npm/node 二进制文件的绝对路径,示例:

安装依赖.sh

#!/bin/bash

echo "Install dependencies. $(pwd)"
cd /home/ec2-user/deploy/

/home/ec2-user/.nvm/versions/node/v15.2.0/bin/npm install

启动服务器.sh

#!/bin/bash

echo "Restarting servers..."

/home/ec2-user/.nvm/versions/node/v15.2.0/bin/pm2 restart 0

codedpeloy 是否使用 root 用户发出这些命令,即使为 ec2-user 设置了 runas?我不明白发生了什么,它以前有效。

最佳答案

这归结为节点路径在执行时不可用。如果节点是通过 nvm 安装的,请尝试添加正确的路径。

另一种方法是将 source ~/.nvm/nvm.sh 添加到您的 bash 配置文件(或适当的文件,具体取决于您的环境)。参见 Node Version Manager install - nvm command not found

关于bash - AWS CodeDeploy [标准错误]/usr/bin/env : node: No such file or directory,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65346805/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com