web-dev-qa-db-ja.com

Express.js:そのようなファイルまたはディレクトリはありません

apt-get install nodejsでノードをインストールしました。次に、apt-get install npmでnpmをインストールしました。 expressを実行しようとすると、

$ express 
/usr/bin/env: node: No such file or directory

このエラーを解決するにはどうすればよいですか?

50
Evan Carroll

Ubuntuには、同様の名前を持つ2つのパッケージnodenodejsがあります。

nodeがこれを行い、

Description-en:アマチュアパケットラジオNodeプログラム。ノードプログラムはTCP/IPおよびパケット無線ネットワーク接続を受け入れ、ユーザーにさまざまな方法でリモートホストへのゲートウェイ接続を可能にするインターフェースを提供します。アマチュア無線プロトコルの。

nodejsがこれを行い、

Description-en:Node.jsイベントベースのサーバー側JavaScriptエンジンNode.jsは、RubyのEvent MachineやPythonのTwistedなどのシステムに設計が似ており、影響を受けます。イベントモデルをもう少し進めます-イベントループをライブラリとしてではなく、言語構造として提示します。 Node.jsには、システム、イベント、標準I/O、モジュール、タイマー、子プロセス、POSIX、HTTP、マルチパート解析、TCP、DNS、アサート、パス、URL、クエリ文字列などのサーバータスクを処理する便利なライブラリがいくつかバンドルされています。

Fedoraも同様のパッケージ命名スキームに従います。このため、nodejsのバイナリは、元のnodejsからnodeに名前を変更する必要がありました。ただし、これは技術的にはコーシャではありません。ほとんどのnodejsプログラム(およびnpmでインストールされたライブラリ)は、ノードバイナリがnodeであると想定しています。これを回避したい場合、最も簡単な方法は、2つをシンボリックリンクすることです。この方法をとる場合は、アマチュアパケットラジオを扱うnodeパッケージをインストールしないでください。

Sudo ln -s /usr/bin/nodejs /usr/local/bin/node

あるいは、ノードの場合、 n を使用し、nodeをインストールしないことをお勧めします。 npmをインストールして(ノードをインストールします)、npmを削除し、aptにクリーンアップするよう指示します。これを行うには、単に実行します

Sudo apt-get install npm
Sudo npm install -g n
Sudo n latest
Sudo apt-get --purge remove npm
Sudo apt-get autoremove

nvmのようなシェルスクリプトでも動作するバイナリディストリビューションマネージャーは他にもありますが、個人的にはnを好みます。 nは、/usr/local/binにインストールするノードバイナリの1つだけのaptのようなものだと考えてください。

なぜnpmを削除するのですか?そうではなかった。 apt-get --purge removeは、onlyパッケージマネージャーによってインストールされたものを削除できます。 n latestは、パッケージマネージャーの外部で機能します。これを行う場合、2つのnpmがあります。

  1. ディストリビューション(Debian/Ubuntu)がapt-getを使用してインストールしたバージョン。
  2. n latestによってインストールされたバージョン。

ディストリビューションの古いバージョンを使用しても意味がありません。さらに悪いことに、そのバージョンが動作する場合は、別の場所にインストールされ、Debianのインストールディレクトリを想定したDebianの変更が行われる可能性があります。両方ではなく、どちらかまたは両方を使用する方が適切です。

106
Evan Carroll

/ usr/bin/nodeから/ usr/bin/nodejsへのリンクを持つnodejs-legacyパッケージをインストールする必要があります

$ Sudo apt-get install nodejs-legacy

21
Sergey Fedoseev

私の場合は、PATH環境変数に「〜/ progs/node/bin /」があり、「〜」はenv...で解決されないためです。それを実際のフルパス( "/ home/myuser/node/bin")に置き換えることで問題が解決しました。

4
Anthony O.

このソリューション

export PATH="$HOME/opt/nodejs/bin:$PATH"

私のためにこの問題を解決しました($ HOME変数が適切に設定されていると仮定して動作するはずです)。また、ホームディレクトリへのパスをハードコーディングすることを回避できます(たとえば、必要に応じて.bash_profileを異なるアカウント/サーバーで再利用できます)

2
SnapShot

cmdでこれを行う

Sudo apt-get install nodejs-legacy
chmod your folder 700 (optional)
0
Bilal Naqvi