我已经在 Ubuntu 18.04 上安装了带有 NVM 的 node/npm。我可以通过 ssh 进入服务器并运行node -v
(v13.9.0) 和npm -v
(v13.9.0),因此它们已安装并且可由用户执行。
当我尝试通过 Laravel Envoy 部署工具执行此操作时,我收到以下错误:
bash: line 5: npm: command not found
我的 Envoy 脚本非常简单,如下所示:
@servers(['main' => ['deploy@**.***.**.**']])
@task('deploy', ['on' => 'main'])
composer -V
npm -v
@endtask
因此,由于某种原因,当 Envoy 登录服务器时,它无法访问 node/npm。系统上安装的所有其他东西,如 php 和 composer 都可以正常工作。
Envoy 看不到 NVM 节点/npm 安装是否有任何原因?Envoy 是否没有使用我的部署用户登录?
当我检查它指向哪个 npm 时:
/home/deploy/.nvm/versions/node/v13.9.0/bin/npm
我试过直接在我的 ssh shell 中调用它并得到正确的结果,npm 按预期运行。
然后我尝试将其添加到我的 Envoy 脚本中,如下所示:
@task('deploy', ['on' => 'main'])
composer -V
/home/deploy/.nvm/versions/node/v13.9.0/bin/node -v
@endtask
但是它返回错误:
‘node’: No such file or directory
有趣的是,我可以通过像这样直接引用二进制文件来使用 Laravel Envoy 运行节点/home/deploy/.nvm/versions/node/v13.9.0/bin/node -v