過去に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
がグローバルなnpm
bin
から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を使ったことがありません。
PATH
の拡張:
export PATH=/usr/local/share/npm/bin:$PATH
ひどい考えではありません。そうは言っても、それをする必要はないはずです。
これを実行します:
npm config get prefix
OS Xのデフォルトは/usr/local
です。つまり、npmはバイナリを/usr/local/bin
にシンボリックリンクします。これは既にPATH
にあるはずです(特にHomebrewを使用している場合)。
そう:
npm config set prefix /usr/local
それが他のものである場合、およびSudo
を使用しないでください! jslint docs によると、あなたはnpm install
できるはずです。NpmをSudo(Sudo brew install
)としてインストールした場合は、プレーンol 'brew install
で再インストールしてみてください。 Homebrewは、あなたをSudo
- freeに保つのに役立つはずです。
この問題にしばらく時間をかけた、とPATHスイッチは助けにはならなかった。私の問題はここで見つけたHomebrew/node/npmのバグでした - https://github.com/npm/npm/issues/3794
自作を使用してノードを既にインストールしている場合は、****を試してみてください。これは安全ではない可能性があることに注意してください。それは私のために働きましたが、意図しない結果を招く可能性がありました。 Homebrewの最新版はnpmを正しくインストールするようです。それで私は****を試す前にbrew update
、brew doctor
、brew upgrade node
などを試してみるでしょう。
npm update -gf
あるいは、Homebrewでnodeをインストールしてnpmを動作させたい場合は、次のようにします。
brew install node --without-npm
curl -L https://npmjs.org/install.sh | sh
私は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
npmに-gを付けて実行している場合でも、brewではSudoを使用する必要はありません。これは実際にはより多くの問題を引き起こす可能性があります。
通常、brewまたはportを使用してパスを更新すると、.zshrc、.bashrc、.cshrc、または使用するシェルの種類を変更する危険がなくなります。
誰もがそれがbrewとnpmの間の競合に関連しているのと同じ問題を抱えていました。この解決策をチェックしてください https://Gist.github.com/DanHerbert/9520689
実行してみてください。
PATH=$PATH:~/npm/bin
次に、コマンドラインでexpress
を実行してテストを行います。これは私のために働きました。
Sudo brewはもはやオプションではないので、この時点でbrewを使用してインストールすると、2つの非常に不快なものが得られます。A:/usr/local/opts
にインストールするのが好きです。これは最初は大したことではありませんが、特にlintをインストールしたときにノードPATHに問題がありました。 B:この方法でアンインストールしてインストールするか、 Bitnami からスタックを取得できるまで、Sudoコマンドにこだわっています。
複数のプロジェクトがある場合はすぐに使用できるので、スタックオプションよりもこの方法をお勧めします。既製のMEANスタックを使用する場合は、httpd.confで仮想ホストを設定する必要があります(XAMPPよりもこのスタックの方が苦労します)。プロジェクトの更新。データの更新が完了したら、サーバーを再ポイントして再起動します。
簡単な解決策は….
ちょうどコマンドの下に置く:
Sudo npm config get prefix
これが/usr/local
のようなものでない場合は、belowコマンドを使用して修正する必要があります。
Sudo npm config set prefix /usr/local
...
今では100%うまく働いている
私は次のようにしてVue Cliのコマンドエラーを修正することができました。
Sudo nano ~/.bash_profile
。export PATH=$PATH:/Users/[your username]/.npm-packages/bin
を追加vue create my-project
とvue --version
などを使えるようになります。から最新のVue Cliをインストールした後にこれを行いました https://cli.vuejs.org/
私は通常糸を使用しますが、私はこれをnpm npm install -g @vue/cli
でグローバルにインストールしました。 yarn global add @vue/cli
をご希望の場合は、糸も使用できます。
注:既にインストール済みの場合は、最初にグローバルにアンインストールする必要があります。npm uninstall -g vue-cli
お役に立てれば!
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のリストを与えて、リンクされたノードモジュールを簡単に見ることができます。