4

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

4

1 に答える 1