运行安装脚本时NPM不可用

运行安装脚本时NPM不可用,npm,Npm,我有一个有趣的问题,我有一个安装或rails项目,当作为一个习惯于安装一切的专用用户(deploy)运行时,部署/升级工作绝对正常 我使用codeDeploy来管理部署,它使用root用户在AWS上进行部署,但在部署期间,它无法运行相同的脚本,因为它无法找到npm命令 cd client && npm run build:client sh: 1: npm: not found rake aborted! Command failed with status (127): [cd

我有一个有趣的问题,我有一个安装或rails项目,当作为一个习惯于安装一切的专用用户(deploy)运行时,部署/升级工作绝对正常

我使用codeDeploy来管理部署,它使用root用户在AWS上进行部署,但在部署期间,它无法运行相同的脚本,因为它无法找到npm命令

cd client && npm run build:client
sh: 1: npm: not found
rake aborted!
Command failed with status (127): [cd client && npm run build:client...]
如果我手动运行它来检查是否也没有任何结果

root@ip-172-31-4-141:/home/ubuntu# su deploy -c "which npm"
root@ip-172-31-4-141:/home/ubuntu#
NPM可以通过部署用户使用,但我很难理解为什么它不能通过根用户使用

deploy@ip-172-31-4-141:/home/ubuntu$ which npm
/home/deploy/.nvm/versions/node/v7.8.0/bin/npm
解决这个问题的任何帮助都将是巨大的


谢谢,

这里的问题是AWS CodeDeploy在开始部署时只加载最小的环境;要加载所有env变量,我已经导出了env,然后在部署阶段源文件中,它解决了我的问题

它被本地安装到
deploy
用户。它位于
/home/deploy
中,因此只有该用户才能运行它。虽然我认为npm不应该作为root用户运行,但解决方案是也为root用户安装它。