
Supervisor から Node.js アプリケーションを実行しようとすると、次のエラーが発生します。
/usr/bin/env node: No such file of directory
これはUbuntu 16.04を実行しているマシンで、実際には/usr/bin/nodeがインストールされており、/usr/bin/nodejsにシンボリックリンクされています。Node.js リポジトリだから走るときは
node -v
/usr/bin/env node -v
次のような結果になります:
v9.7.1
私のアプリケーションの Supervisor (v 3.2.0) の構成は次のとおりです。
[program:verdaccio]
command=/usr/bin/verdaccio
autostart=true
autorestart=true
user=ubu
environment=HOME="/home/ubu",USER="ubu",PATH="$PATH:/home/ubu/.local/bin"
どうしたの?
答え1
ノード バージョン マネージャーを使用している場合はnvm
、次のコメントを使用してシンボリック リンクを作成します。
sudo ln -s "$(which node)" /usr/bin/node
答え2
実際には、これは非常に単純ですが、標準システムのリポジトリから Node.js をインストールした人の「/usr/bin/node へのシンボリックリンクがない」問題とはまったく関係がありません。
それはスーパーバイザーのタスク構成の問題です。つまり、
PATH="$PATH:/home/ubu/.local/bin"
物事を台無しにしています。これは、Node をグローバルではなく ~/.local/bin から実行したときのアーティファクトです。これを削除し、スーパーバイザーをリロードすると、アプリケーションは正常に動作するようになりました :)
誰かの役に立つことを願います。
答え3
ほとんどの場合、これは単純な命名の問題です。パッケージ マネージャーからインストールする場合、bin ファイルは nodejs と呼ばれることがあるため、次のコマンドを使用してシンボリック リンクを作成する必要があります。
ln -s /usr/bin/nodejs /usr/bin/node