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 シェルで直接呼び出してみたところ、正しい結果が得られました。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