2013-02-24 15 views
36

グローバルノードモジュールをインストールする際に問題が発生しました。オンラインで見つけたものは、解決方法は-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 --version 
v0.8.20 
$ npm --version 
1.2.11 
$ brew --version 
0.9.4 
OSX Version 10.8.2 
+1

これは、/ usr/local/share/npm/bin /がシェルの$ PATHにないためです。そのため、シェルは「express」を見つけることができません。 –

+1

私は:export PATH =/usr/local/share/npm/bin:$ PATHをmy .bash_profileに追加しました。ありがとう!私はそれを受け入れてupvoteできるように答えを追加します。 –

答えて

37

はあなたPATH(例えば、.bashrc中)に/usr/local/share/npm/binを追加します。

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

グローバルモード: NPMは、接頭辞/ libに/ node_modulesでインストール接頭辞にパッケージをインストールし、ビンは、接頭辞/ binにインストールされています。

インストールプレフィックスはnpm get prefixまたはnpm config list | grep prefixです。

+0

nvmを使用していない非sudoの場合は、パスを.bash_profileまたは.bashrcに '$ HOME/.npm'にするべきではありませんか?私はnvmを使用していますので、これで物事を交わさないようにしてください。 – blamb

-5

ステップ

まず、ノード削除:

vi ~/.bash_rc 

コピー以下の項目を、ステップ2で開いた、ファイルに貼り付けます:

sudo rm -rf /usr/local/lib/node_modules/jitsu 
npm cache clear 
sudo npm install jitsu -g 

第二に、.bash_rc作成

[[ -s ~/.bashrc ]] && source ~/.bashrc 
export PATH=/usr/local/share/npm/bin:$PATH 

Jitsuを実行します。これはあなたが見るべきものである、viの〜/ .bash_profileのを実行します。

[[ -s ~/.bashrc ]] && source ~/.bashrc 
export PATH=/usr/local/share/npm/bin:$PATH 

# {{{ 
# Node Completion - Auto-generated, do not touch. 
shopt -s progcomp 
for f in $(command ls ~/.node-completion); do 
    f="$HOME/.node-completion/$f" 
    test -f "$f" && . "$f" 
done 
# }}} 

私はこの記事からノードを除去するための答えが見つかりました: JITSU FAILED TO INSTALL OSX [node 0.8.17 and NPM 1.2.0] WTF

50

これはあなたのノードがプレフィックスをインストールする意味するかもしれないが、何ではありません期待する。

あなたはそうのようにそれを設定することができます。

npm config set prefix /usr/local

再度npm install -gを実行してみて、それがうまくいかなければなりません。 Mac上で私のために働いた、とソリューションは、このサイトから来ている:

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

編集:私はちょうど私が設定してい再び新しいMac上でこの出くわし、処理をしなければならなかったことに注意してくださいdetailed here on stackoverflowも同様である。

+3

あなたは男です...ありがとう! – Nico

+2

これは正解です – naomik

+0

私は 'nodenv'を使用していますが、私の場合はこの問題を解決する可能性が最も高いです。しかし、あなたのソリューションは迅速かつ厄介な修正として機能しました!私は接頭辞を 'nodenv'接頭辞に戻して、'/usr/local path'からパッケージを実行することができました。ありがとう! –

3

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

この特定のシステムは、SSH経由でアクセスRHEL7です:

よく1は、ノードのさまざまなバージョンを必要とするので、私は使用NVM https://github.com/creationix/nvm

とは言うので、私はグローバル-gのためにあなたの作業例を表示することができますNVM、NPM、およびルートを使用しないノードパスを使用してインストールします。

.npm-packagesのプレフィックスをまだ設定していない場合は、それを設定します。あなたがreadup on why and which hereを好む場合は、以下の情報を、あなたの〜/ .bash_profileファイルまたは.bashrcのを調整

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

を(ノートでは、ハイフン、アンダースコアではないのthats)。

#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の必要はありません)

他のすべてのノードパスの書き出しをかなり置き換える/コメントアウトすることができます。このパス情報は、他のパス情報の下に安全に置くことができ、その情報を上書きすることはありません。

関連する問題