170 votes

préfixe de chemin global npm

Je suis plus prudent que d'habitude parce que j'ai été troublé par le comportement de l' npm dans le passé.

Je suis sur un Mac et que vous avez installé node.js par le biais brew install node.

Maintenant que je veux l'exécuter en jslint.js sur la ligne de commande que la commande jslint je trouve que la manière canonique pour accomplir cela est - sudo npm install -g jslint qui a été exécuté avec succès de cette sortie:

enter image description here

Par la suite

enter image description here

en raison d' /usr/local/share/npm/bin n'étant pas dans mon $PATH.

1) Pourquoi avez - brew pas installer mondiale npm bin chemin de chemin? Peut-être qu'il a fait, mais quelque chose d' zsh n'est gâcher. Où pourrais-je être capable de le trouver?
2) dois-je faire cela? (Append :/usr/local/share/npm/bin de la exporté $PATH dans le bas de mon ~/.zshrc)

Il semble que ce n'est pas la bonne façon de le faire, parce que si je installer quelque chose d'autre plus tard (à l'aide de Homebrew ou quelque chose), je vais avoir besoin de l'ajouter à mon zsh script de démarrage pour définir le chemin d'accès. Je suppose que dans ce cas particulier, c'est juste une question de l' npm install -g de ne pas faire les bons liens symboliques dans un "bon" emplacement (comme /usr/local/bin peut-être).

Je pense que ce que je vais faire manuellement créer des liens symboliques à l'intérieur d' /usr/local/bin pour tous les programmes que j'ai de la difficulté avec et il devrait être assez bon pour mes fins.

341voto

Trevor Burnham Points 43199

L'extension de votre PATH avec:

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

n'est-ce pas une idée terrible. Cela dit, vous ne devriez pas avoir à le faire.

Exécuter ce:

npm config get prefix

La valeur par défaut sur OS X est /usr/local, ce qui signifie que la ngp sera symlink binaires en /usr/local/bin, ce qui devrait déjà être sur votre PATH (surtout si vous utilisez Homebrew).

Donc:

  1. npm config set prefix /usr/local si c'est autre chose, et
  2. Ne pas utiliser sudo avec npm! Selon le jslint docs, vous devez simplement être en mesure d' npm install .

Si vous avez installé npm comme sudo (sudo brew install), essayez de le réinstaller avec la plaine ol' brew install. Homebrew est censé aider à vous garder en sudo-gratuit.

6voto

YPCrumble Points 526

Passé un moment sur cette question, et le commutateur PATH n'aidait pas. Mon problème était le bogue Homebrew / node / npm trouvé ici - https://github.com/npm/npm/issues/3794

Si vous avez déjà installé un noeud avec Homebrew, essayez:

 npm update -gf
 

Ou, si vous voulez installer le noeud avec Homebrew et faire fonctionner npm, utilisez:

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

3voto

Pascal Belloncle Points 5199

brew ne devrait pas vous obliger à utiliser sudo, même si vous exécutez npm avec -g. Cela pourrait en fait créer plus de problèmes sur la route.

Généralement, brassage ou port vous permet de mettre à jour votre chemin afin de ne pas risquer de gâcher votre .zshrc, .bashrc, .cshrc ou le type de shell que vous utilisez.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X