【发布时间】:2017-09-09 17:22:40
【问题描述】:
在持续部署上下文中,我执行了一个 shell 脚本来更新和重新启动远程服务器中的应用程序
脚本是:
ssh user@myserver <<'ENDSSH'
cd /opt/myapp
git pull
npm i
forever stop src
npm run staging
ENDSSH
输出是:
stdin: is not a tty
Already up-to-date.
-bash: line 3: npm: command not found
-bash: line 4: forever: command not found
-bash: line 5: npm: command not found
注意:
如果我 ssh 到远程服务器并手动输入这些命令,一切正常
node 和 npm 与 nvm 一起安装在远程服务器上
which npm给/root/.nvm/versions/node/v6.10.0/bin/npm
【问题讨论】:
-
所以看起来您正在尝试将 npm 与 nvm 一起使用。您是否尝试过在脚本中运行 nvm 命令来选择版本?在运行 npm 之前?
-
@wheeler 在脚本中添加了
nvm --version。得到-bash: line 3: nvm: command not found -
在“连续部署上下文”中执行时,您使用的是哪个用户 - 与您 ssh 的用户相同?通过键入
node --version确保 CI 用户可以使用节点 -
@GreensterRox 从安装了节点、npm 等的计算机上运行脚本时遇到了同样的问题。所以 CI 不是问题的根源