npm mondiale préfixe de chemin

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

je suis sur un Mac et j'ai installé un noeud.js à brew install node .

maintenant que je veux exécuter jslint.js sur la ligne de commande comme la commande jslint je trouve que le moyen canonique d'accomplir ceci est sudo npm install -g jslint qui a fonctionné avec succès avec cette sortie:

$ 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)

Par la suite

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

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

1) Pourquoi brew ne pas installer mondial npm bin chemin pour chemin? Peut-être, mais quelque chose comme zsh est en train de tout gâcher. Où pourrais-je être capable de le trouver?

2) dois-je faire cela? (Ajouter :/usr/local/share/npm/bin au $PATH exporté au bas de mon ~/.zshrc )

It il semble que ce ne soit pas la bonne façon de le faire car si j'installe quelque chose plus tard (en utilisant Homebrew ou quelque chose comme ça) je vais devoir l'ajouter à mon script de démarrage zsh pour définir le chemin. Je suppose que dans ce cas particulier, il s'agit simplement de la npm install -g ne faisant pas les bons liens symboliques dans un "bon" emplacement (comme /usr/local/bin peut-être).

je pense que ce que je vais faire est manuellement construire des liens symboliques à l'intérieur de /usr/local/bin pour tous les programmes que j'ai des problèmes avec et il devrait être assez bon pour mes fins.

111
demandé sur Steven Lu 2013-02-11 03:42:16

8 réponses

extension de votre PATH avec:

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

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

Exécuter ceci:

npm config get prefix

la valeur par défaut sur OS X est /usr/local , ce qui signifie que npm va faire un lien symbolique vers /usr/local/bin , qui devrait déjà être sur votre PATH (surtout si vous utilisez Homebrew).

:

  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 devriez juste être en mesure de npm install il.

si vous avez installé npm sous le nom de sudo ( sudo brew install ), essayez de le réinstaller avec le simple brew install . Homebrew est censé vous aider à garder sudo libre.

246
répondu Trevor Burnham 2014-10-03 13:00:52

a passé un moment sur cette question, et le commutateur de chemin n'a pas aidé. Mon problème était le bug Homebrew/node/npm trouvé ici - https://github.com/npm/npm/issues/3794

si vous avez déjà installé node en utilisant Homebrew, essayez ****notez Par commentaires que cela pourrait ne pas être sûr. Ça a marché pour moi, mais ça pourrait avoir des conséquences involontaires. Il semble également que la dernière version de Homebrew installe correctement npm. Si probable que j'essaierais brew update , brew doctor , brew upgrade node etc avant d'essayer****:

npm update -gf

ou, si vous voulez installer node avec Homebrew et avoir un travail npm, utilisez:

brew install node --without-npm
curl -L https://npmjs.org/install.sh | sh
7
répondu YPCrumble 2015-08-23 16:19:54

j'utilise brew et le préfixe était déjà fixé à:

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

j'ai remarqué que le dossier bin et lib étaient la propriété de root, ce qui a empêché l'installation habituelle non sudo, donc je les ai repris à l'utilisateur ""

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

puis j'ai juste ajouté le chemin à mon .bash_profile qui se trouve dans /Utilisateurs/[utilisateur]

PATH=$PATH:~/.node/bin
5
répondu Greg 2015-09-16 19:56:32

brew ne devrait pas vous obliger à utiliser sudo même si vous utilisez npm avec -G. Cela pourrait en fait créer plus de problèmes plus tard.

typiquement, brew ou port vous permettent de mettre à jour votre chemin pour qu'il ne risque pas de gâcher votre .zshrc,.bashrc,.cshrc, ou quel que soit le parfum de la coquille que vous utilisez.

3
répondu Pascal Belloncle 2013-02-11 00:19:40

N'importe qui a le même problème c'est lié à un conflit entre brew et npm S'il vous plaît vérifier cette solution https://gist.github.com/DanHerbert/9520689

1
répondu Bdwey 2017-04-15 16:05:47

Essayez de lancer:

PATH=$PATH:~/npm/bin

et ensuite faire un test en lançant express dans la ligne de commande. Cela a fonctionné pour moi.

0
répondu kiko carisse 2016-10-28 01:41:33

si vous avez lié les paquets de noeuds en utilisant la commande sudo

puis allez dans le dossier où node_modules est installé globalement.

sur les systèmes Unix, ils sont normalement placés dans /usr/local/lib/node ou /usr/local/lib/node_modules lorsqu'ils sont installés globalement. Si vous définissez la variable d'environnement NODE_PATH à ce chemin, les modules peuvent être trouvés par noeud.

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

et ensuite exécuter la commande

ls -l

Cela donnera la liste de tous les modules globaux node_modules et vous pourrez facilement voir les modules de noeuds liés.

0
répondu selftaught91 2017-02-22 04:10:35

sudo brew n'est plus une option, donc si vous installez avec brew à ce stade, vous allez obtenir 2 vraiment désagréable choses: R: il aime installer dans /usr/local/opts ou selon ceci, /usr/local/partagé. Ce n'est pas grand chose au début mais j'ai eu des problèmes avec le chemin des noeuds surtout quand j'ai installé lint. B: vous êtes en quelque sorte coincé avec les commandes sudo jusqu'à ce que vous désinstallez et l'installez de cette façon ou vous pouvez obtenir la pile de Bitnami

je recommande cette méthode par rapport à l'option stack car elle est prête à être utilisée si vous avez plusieurs projets. Si vous utilisez la pile de moyens premade, vous devrez configurer des hôtes virtuels dans httpd.conf (plus d'une douleur dans cette pile que XAMPP)plust la mise à jour habituelle de vos extra/vhosts.conf et / etc / hosts pour chaque projet supplémentaire, à moins que vous ne vouliez re-pointer et redémarrer votre serveur lorsque vous avez terminé la mise à jour.

0
répondu angel 2017-03-01 16:53:43