web-dev-qa-db-ja.com

npmグローバルパスプレフィックス

過去にnpmの振る舞いに混乱していたので、私はいつもより慎重になっています。

私はMac上にいて、brew install nodeを通してnode.jsをインストールしました。

コマンドラインでjslint.jsをコマンドjslintとして実行したいので、これを実行するための標準的な方法はSudo npm install -g jslintであり、この出力で正常に実行されたことがわかりました。

$ Sudo npm install -g jslint
npm http GET https://registry.npmjs.org/jslint
npm http 200 https://registry.npmjs.org/jslint
npm http GET https://registry.npmjs.org/jslint/-/jslint-0.1.9.tgz
npm http 200 https://registry.npmjs.org/jslint/-/jslint-0.1.9.tgz
npm http GET https://registry.npmjs.org/nopt
npm http 200 https://registry.npmjs.org/nopt
npm http GET https://registry.npmjs.org/nopt/-/nopt-1.0.10.tgz
npm http 200 https://registry.npmjs.org/nopt/-/nopt-1.0.10.tgz
npm http GET https://registry.npmjs.org/abbrev
npm http 200 https://registry.npmjs.org/abbrev
npm http GET https://registry.npmjs.org/abbrev/-/abbrev-l.0.4.tgz
npm http 200 https://registry.npmjs.org/abbrev/-/abbrev-1.0.4.tgz
/usr/local/share/npm/bin/jslint -> /usr/local/share/npm/lib/node_modules/jslint/
bin/jslint.js
[email protected] /usr/local/share/npm/lib/node_modules/jslint
└── [email protected] ([email protected])

その後

$ jslint ply.js
zsh: command not found: jslint

/usr/local/share/npm/binが私の$PATHに含まれていないためです。

1)なぜbrewがグローバルなnpmbinからpathへのパスをインストールしなかったのですか?たぶんそれはした、しかしzshがすることはそれをめちゃくちゃにしている。どこでそれを見つけることができるでしょうか?
2)これをするべきですか? (私の:/usr/local/share/npm/binの下部にあるエクスポートされた$PATH~/.zshrcを追加します)

後で別のものをインストールする場合(Homebrewまたは何かを使用して)、パスを設定するためにzsh起動スクリプトに追加する必要があるため、これを実行するのは正しい方法ではないようです。この特定の例では、npm install -gが(正しい/usr/local/binのような)正しいシンボリックリンクを作成していないことが問題だと思います。

私がすることは私が問題を抱えているプログラムのために手動で/usr/local/binの中にシンボリックリンクを構築することであると思います、そしてそれは私の目的のために十分に良いはずです。

EDIT:これは2019年に更新されました。古い質問は人気がありますが、個人的なワークフローとノードのインストールおよびその管理方法の両面で古くなっています。さまざまな依存関係.

私の個人的なワークフローは、nodejs.orgから入手したインストーラーを使ってシステムにノードをインストールすることです。私は実際には自作パッケージ自体よりもこれを信頼しています。なぜならそれはファイルを管理する方法を最もよく知っているからです。 MacでもWindowsでも、システムノードを8.10から10.15に変更したい場合は、ご使​​用のOS用のnodejs.orgから10.15用のインストーラをダウンロードしてください。自作でインストールされたノードをアップグレードしようとすることは、私の経験上、常により難しいアプローチであることが証明されています。

また、指摘しておくべき最大のことは、上記のjslintサンプルのnpmインストールに示されているようにSudoを使用することは非常にお勧めできないことです。自作パッケージは決してスーパーユーザーを使ってインストールしたり対話したりしてはいけません。それは必要ではないはずで、ファイル許可の頭痛の種になります!

さらに、私はjslintよりもESLintをお勧めします、そして何年もjslintを使ったことがありません。

128
Steven Lu

PATHの拡張:

export PATH=/usr/local/share/npm/bin:$PATH

ひどい考えではありません。そうは言っても、それをする必要はないはずです。

これを実行します:

npm config get prefix

OS Xのデフォルトは/usr/localです。つまり、npmはバイナリを/usr/local/binにシンボリックリンクします。これは既にPATHにあるはずです(特にHomebrewを使用している場合)。

そう:

  1. npm config set prefix /usr/localそれが他のものである場合、および
  2. NpmでSudoを使用しないでください! jslint docs によると、あなたはnpm installできるはずです。

NpmをSudo(Sudo brew install)としてインストールした場合は、プレーンol 'brew installで再インストールしてみてください。 Homebrewは、あなたをSudo- freeに保つのに役立つはずです。

285
Trevor Burnham

この問題にしばらく時間をかけた、とPATHスイッチは助けにはならなかった。私の問題はここで見つけたHomebrew/node/npmのバグでした - https://github.com/npm/npm/issues/3794

自作を使用してノードを既にインストールしている場合は、****を試してみてください。これは安全ではない可能性があることに注意してください。それは私のために働きましたが、意図しない結果を招く可能性がありました。 Homebrewの最新版はnpmを正しくインストールするようです。それで私は****を試す前にbrew updatebrew doctorbrew upgrade nodeなどを試してみるでしょう。

npm update -gf

あるいは、Homebrewでnodeをインストールしてnpmを動作させたい場合は、次のようにします。

brew install node --without-npm
curl -L https://npmjs.org/install.sh | sh
7
YPCrumble

私はbrewを使い、接頭辞はすでに次のように設定されています。

$ npm config get prefix
/Users/[user]/.node

私はbinとlibフォルダがrootによって所有されていることに気付きました、それは通常のSudo以外のインストールを妨げたので、私はそれらをユーザに再所有しました

$ cd /Users/[user]/.node
$ chown -R [user]:[group] lib
$ chown -R [user]:[group] bin

それから私はちょうど/ Users/[user]にある私の.bash_profileにパスを追加しました

PATH=$PATH:~/.node/bin
5
Greg

npmに-gを付けて実行している場合でも、brewではSudoを使用する必要はありません。これは実際にはより多くの問題を引き起こす可能性があります。

通常、brewまたはportを使用してパスを更新すると、.zshrc、.bashrc、.cshrc、または使用するシェルの種類を変更する危険がなくなります。

3

誰もがそれがbrewとnpmの間の競合に関連しているのと同じ問題を抱えていました。この解決策をチェックしてください https://Gist.github.com/DanHerbert/9520689

1
Bdwey

実行してみてください。

PATH=$PATH:~/npm/bin

次に、コマンドラインでexpressを実行してテストを行います。これは私のために働きました。

0
kiko carisse

Sudo brewはもはやオプションではないので、この時点でbrewを使用してインストールすると、2つの非常に不快なものが得られます。A:/usr/local/optsにインストールするのが好きです。これは最初は大したことではありませんが、特にlintをインストールしたときにノードPATHに問題がありました。 B:この方法でアンインストールしてインストールするか、 Bitnami からスタックを取得できるまで、Sudoコマンドにこだわっています。

複数のプロジェクトがある場合はすぐに使用できるので、スタックオプションよりもこの方法をお勧めします。既製のMEANスタックを使用する場合は、httpd.confで仮想ホストを設定する必要があります(XAMPPよりもこのスタックの方が苦労します)。プロジェクトの更新。データの更新が完了したら、サーバーを再ポイントして再起動します。

0
angel

簡単な解決策は….

ちょうどコマンドの下に置く:

  1. Sudo npm config get prefix

    これが/usr/localのようなものでない場合は、belowコマンドを使用して修正する必要があります。

  2. Sudo npm config set prefix /usr/local...

今では100%うまく働いている

0
Yogesh Patil

私は次のようにしてVue Cliのコマンドエラーを修正することができました。

  • あなたのbashプロファイルを編集するための端末Sudo nano ~/.bash_profile
  • export PATH=$PATH:/Users/[your username]/.npm-packages/binを追加
  • ファイルを保存して端末を再起動
  • これでvue create my-projectvue --versionなどを使えるようになります。

から最新のVue Cliをインストールした後にこれを行いました https://cli.vuejs.org/

私は通常糸を使用しますが、私はこれをnpm npm install -g @vue/cliでグローバルにインストールしました。 yarn global add @vue/cliをご希望の場合は、糸も使用できます。

注:既にインストール済みの場合は、最初にグローバルにアンインストールする必要があります。npm uninstall -g vue-cli

お役に立てれば!

0
Mark Fasel

Sudoコマンドを使ってノードパッケージをリンクした場合

次に、node_modulesがグローバルにインストールされているフォルダーに移動します。

Unixシステムでは、グローバルにインストールされると、それらは通常/ usr/local/lib/nodeまたは/ usr/local/lib/node_modulesに置かれます。 NODE_PATH環境変数をこのパスに設定した場合、モジュールはノードごとに見つけることができます。

Windows XP - %USERPROFILE%\ Application Data\npm\node_modules Windows 7 - %AppData%\ npm\node_modules

その後、コマンドを実行します

ls -l

これは全てのグローバルなnode_moduleのリストを与えて、リンクされたノードモジュールを簡単に見ることができます。

0
selftaught91