グローバルノードモジュールのインストールに問題があり、オンラインで見つけたすべてのことは、解決策は-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
/usr/local/share/npm/bin
をPATH
に追加します(例:.bashrc
)。
詳細については、npm help npm
を参照してください。
グローバルモード:npmは、prefix/lib/node_modulesのインストールプレフィックスにパッケージをインストールし、binsはprefix/binにインストールされます。
npm get prefix
またはnpm config list | grep prefix
でインストールプレフィックスを見つけることができます。
これは、ノードのインストールプレフィックスが予期したものではないことを意味します。
次のように設定できます。
npm config set prefix /usr/local
その後、npm install -g
を再度実行してみてください。うまくいくはずです。私はMacで働いていましたが、解決策はこのサイトから来ました:
http://webbb.be/blog/command-not-found-node-npm/
編集:私がセットアップしている新しいMacでこれに再び出会ったばかりで、プロセスを実行しなければならなかったことに注意してください stackoverflowの詳細はこちら 。
私は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
は不要)
他のすべてのノードパスエクスポートを置換/コメントアウトできます。このパス情報は、既にある他のパス情報の下に、安全に上書きせずに置くことができます。
私の場合、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
私の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
mkdir ~/.npm-global
npm config set prefix '~/.npm-global'
export PATH=~/.npm-global/bin:$PATH
source ~/.profile
npm install -g awsmobile-cli
awsmobile configure
次の行を~/.bash_profile
に追加します
export PATH="$HOME/.npm/bin:$PATH"
Bashプロファイルを読み込む
bash -l
私が抱えていた問題は、バイナリが欠落しているでした。これは、ユーザー固有の。npmrcがホームディレクトリのファイルにbin-links
false
に設定、ただしdefault is true
。
これが問題である場合に備えて、.npmrcファイルがfalseに設定されていないことを確認してください。
その後、すべてのモジュールを再インストールすると、prefix
にバイナリが作成され、PATH
がそれらを表示できるようになります。