web-dev-qa-db-ja.com

グローバルNodeモジュールが正しくインストールされていません。コマンドが見つかりません

グローバルノードモジュールのインストールに問題があり、オンラインで見つけたすべてのことは、解決策は-gを追加するだけだと言います。これは問題ではありません。リンクの問題またはディレクトリの問題だと思います。

ここに私がやることがあります:

$ npm install -g express
npm http GET https://registry.npmjs.org/express
npm http 304 https://registry.npmjs.org/express
npm http GET https://registry.npmjs.org/range-parser/0.0.4
npm http GET https://registry.npmjs.org/mkdirp/0.3.3
...downloads correctly

$ express myapp
bash: express: command not found

しかし、直接リンクの場所を実行してそれを表現すると機能します:

   $ /usr/local/share/npm/bin/express myapp

   create : myapp
   create : myapp/package.json
   create : myapp/app.js
... Builds app correctly

モジュールの場所:

$ which node
/usr/local/bin/node
$ node -pe process.execPath
/usr/local/Cellar/node/0.8.20/bin/node
$ npm link express
/Users/bentonrr/Development/Personal/node_modules/express -> /usr/local/share/npm/lib/node_modules/express

私の.bash_profileには:

export PATH=/usr/local/bin:$PATH
export NODE_PATH=/usr/local/lib/node_modules:/usr/local/lib/node

Node環境を変更して正しいフォルダーにダウンロードする必要がありますか?何かが正しくリンクされていませんか?失われました。

ありがとう!

その他の仕様:

$ node --version
v0.8.20
$ npm --version
1.2.11
$ brew --version
0.9.4
OSX Version 10.8.2
61
im_benton

/usr/local/share/npm/binPATHに追加します(例:.bashrc)。

詳細については、npm help npmを参照してください。

グローバルモード:npmは、prefix/lib/node_modulesのインストールプレフィックスにパッケージをインストールし、binsはprefix/binにインストールされます。

npm get prefixまたはnpm config list | grep prefixでインストールプレフィックスを見つけることができます。

51
Tim Smith

これは、ノードのインストールプレフィックスが予期したものではないことを意味します。

次のように設定できます。

npm config set prefix /usr/local

その後、npm install -gを再度実行してみてください。うまくいくはずです。私はMacで働いていましたが、解決策はこのサイトから来ました:

http://webbb.be/blog/command-not-found-node-npm/

編集:私がセットアップしている新しいMacでこれに再び出会ったばかりで、プロセスを実行しなければならなかったことに注意してください stackoverflowの詳細はこちら

111
Brad Parks

私はeversudo経由でnpmのものをインストールしません!私には独自の理由がありますが、これはユーザー開発の世界であり、誰もがルートアクセス権を持っているわけではないため、物事をシンプルに、ユーザーベースに保つようにしています。と。結局のところ、すべての開発者は、特権Sudoユーザーだけでなく、これらの指示に従うことができるはずです。

この特定のシステムは、SSH経由でアクセスされるRHEL7です。

ノードのさまざまなバージョンが必要になることが多いので、NVMを使用します https://github.com/creationix/nvm

つまり、NVM、NPM、およびルートを使用しないノードパスを使用した-gグローバルインストールの動作例を示すことができます。

.npm-packagesのプレフィックスが設定されていない場合は設定します。 (注、アンダースコアではなくハイフンです)

nvm config ls
prefix = "/home/<yourusername>/.npm-packages"

必要に応じて、〜/ .bash_profileまたは.bashrcを調整します 理由とここでの読み取り 、次の情報を使用します。

#PATH EXPORTS
NODE_MODULES=$HOME/.npm                                          
NPM_PACKAGES=$HOME/.npm-packages/bin                           
export PATH=$PATH:$HOME/bin:$NODE_MODULES:$NPM_PACKAGES         

#NVM ENABLE                                                 
export NVM_DIR="$HOME/.nvm"                                   
[ -s "$NVM_DIR/nvm.sh" ] && . "$NVM_DIR/nvm.sh" # This loads nvm 

それはほとんどすべてのパスをカバーしています。たとえば、このnpm install -g gulpのようなgulpをインストールすると、~/.npm-packages/binにシンボリックリンクします(下線ではなくハイフンになります)。 (gulp-cli、またはgulp-clは不要)

他のすべてのノードパスエクスポートを置換/コメントアウトできます。このパス情報は、既にある他のパス情報の下に、安全に上書きせずに置くことができます。

4
blamb

私の場合、NODE_PATH環境変数は空でした。空かどうかを確認します-

echo $NODE_PATH

nODE_PATHが空の場合。次に〜/ .bash_profileを変更してNODE_PATHを追加します

nano ~/.bash_profile
export NODE_PATH=`npm root -g`
source ~/.bash_profile

Npmモジュールを再度インストールし、パスにインストールされているかどうかを確認しますnpm root -g

3
lazyTank

私のnpmもグローバルパッケージを見つけることができませんでした。私はブラッドパークスが提案したことをしました:

npm config set prefix /usr/local

その後、EACCESのアクセス権エラー(Sudo npm install -gを使用しないでください)を受け取り、公式のnpm docsで修正しました: https://docs.npmjs.com/resolving-eacces-permissions-errors-when -installing-packages-globally

  1. コマンドラインのホームディレクトリで、グローバルインストール用のディレクトリを作成します。
 mkdir ~/.npm-global
  1. 新しいディレクトリパスを使用するようにnpmを構成します。
 npm config set prefix '~/.npm-global'
  1. 任意のテキストエディターで、〜/ .profileファイルを開くか作成し、次の行を追加します。
 export PATH=~/.npm-global/bin:$PATH
  1. コマンドラインで、システム変数を更新します。
 source ~/.profile
  1. 次に、パッケージをグローバルにインストールしてテストします!例えば:
npm install -g awsmobile-cli
awsmobile configure

2
Vicente
  1. 次の行を~/.bash_profileに追加します

    export PATH="$HOME/.npm/bin:$PATH"
    
  2. Bashプロファイルを読み込む

    bash -l
    
1
Lasithds

私が抱えていた問題は、バイナリが欠落しているでした。これは、ユーザー固有の。npmrcがホームディレクトリのファイルにbin-linksfalseに設定、ただしdefault is true

これが問題である場合に備えて、.npmrcファイルがfalseに設定されていないことを確認してください。

その後、すべてのモジュールを再インストールすると、prefixにバイナリが作成され、PATHがそれらを表示できるようになります。

0
dimpen