153

過去の行動に戸惑い、いつも以上に警戒npmしている。

私は Mac を使用しており、node.js を介してインストールしましbrew install nodeた。

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
jslint@0.1.9 /usr/local/share/npm/lib/node_modules/jslint
└── nopt@1.0.10 (abbrev@1.0.4)

続いて

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

/usr/local/share/npm/bin私の中にいないため$PATH

1)パスへのbrewグローバルnpm binパスをインストールしなかったのはなぜですか? 多分それはしましたが、何かzshがそれを台無しにしています。どこでそれを見つけることができますか?
2) 私はこれをするべきですか? ( my の下部に:/usr/local/share/npm/binあるエクスポートに追加します)$PATH~/.zshrc

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

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

編集:この古い質問は人気がありますが、私の個人的なワークフローの観点からも、ノードのインストールとそのさまざまな依存関係の管理の最善の方法の観点からも、現在は時代遅れになっているため、2019年にこれを更新しています。

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

また、指摘すべき最大のことは、上記の jslint の npm インストールの例に示されているような sudo の使用は、非常に推奨されないということです。スーパーユーザーを使用して自作パッケージをインストールしたり、操作したりしないでください。これは必要ないはずであり、ファイル許可の頭痛の種になります!

さらに、jslint よりも ESLint をお勧めします。何年も jslint を使用していません。

4

11 に答える 11

323

あなたを拡張するPATH

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

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

これを実行します:

npm config get prefix

OS X のデフォルトは です/usr/local。これは、npm がバイナリを にシンボリック リンクすることを意味し/usr/local/binますPATH

そう:

  1. npm config set prefix /usr/localそれが何か他のものである場合、そして
  2. sudonpmでは使用しないでください。jslint docsによると、それができるはずですnpm install

npm を sudo( sudo brew install) としてインストールした場合は、plain ol' で再インストールしてみてくださいbrew install。Homebrew は、あなたを自由に保つのに役立つはずですsudo

于 2013-02-12T19:32:14.373 に答える
3

brewでは、-gを指定してnpmを実行している場合でも、sudoを使用する必要はありません。これにより、実際にはさらに多くの問題が発生する可能性があります。

通常、brewまたはportを使用すると、パスを更新できるため、.zshrc、.bashrc、.cshrc、または使用するシェルのフレーバーを台無しにするリスクがありません。

于 2013-02-11T00:19:40.960 に答える
0

実行してみてください:

PATH=$PATH:~/npm/bin

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

于 2016-10-28T01:14:11.033 に答える
0

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_modules のリストが表示され、リンクされたノード モジュールを簡単に確認できます。

于 2017-02-22T04:10:35.080 に答える