web-dev-qa-db-fra.com

préfixe de chemin global npm

Je suis plus prudent que d’habitude parce que j’ai été dérouté par le comportement de npm par le passé.

Je suis sur un Mac et j'ai installé node.js via brew install node.

Maintenant que je veux exécuter jslint.js sur la ligne de commande en tant que commande jslint, j’aperçois que le moyen canonique d’y parvenir est Sudo npm install -g jslint qui s’est exécuté 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
[email protected] /usr/local/share/npm/lib/node_modules/jslint
└── [email protected] ([email protected])

Par la suite

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

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

1) Pourquoi brew n’a-t-il pas installé le _ chemin global npmbin au chemin? Peut-être que oui, mais quelque chose que zsh fait foirer. Où pourrais-je trouver ça?
2) Devrais-je faire cela? (Ajouter :/usr/local/share/npm/bin au $PATH exporté situé au bas de mon ~/.zshrc)

Il semble que ce ne soit pas la bonne façon de le faire, car si j'installe autre chose plus tard (avec Homebrew ou autre), je devrai 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 npm install -g ne pas créer les bons liens symboliques dans un emplacement "correct" (comme /usr/local/bin peut-être).

Je pense que ce que je vais faire est de créer manuellement des liens symboliques à l'intérieur de /usr/local/bin pour tous les programmes avec lesquels j'ai des problèmes et cela devrait suffire à mes fins.

EDIT: J'effectue une mise à jour en 2019, car cette vieille question est populaire mais est maintenant obsolète tant pour mon flux de travail personnel que pour la meilleure façon d'installer le nœud et de le gérer. diverses dépendances.

Mon flux de travail personnel consiste maintenant à utiliser le programme d'installation obtenu de nodejs.org pour installer le noeud sur les systèmes. En réalité, je fais plus confiance au paquet homebrew lui-même, car il sait mieux gérer les fichiers. Si vous souhaitez modifier votre nœud système de 8.10 à 10.15, que ce soit sur Mac ou Windows, téléchargez simplement le programme d'installation à partir de nodejs.org for 10.15 pour votre système d'exploitation. Tenter de mettre à niveau un nœud installé via homebrew s'est toujours révélé être une approche plus difficile selon mon expérience.

En outre, la chose la plus importante à souligner est que l’utilisation de Sudo, comme indiqué dans l’installation de jslint de npm ci-dessus, est fortement déconseillée; Je suis à peu près certain que les packages homebrew ne doivent en aucun cas être installés ou interagis avec le superutilisateur. Cela ne devrait pas être nécessaire et conduira à des problèmes de permissions!

De plus, je recommande ESLint à jslint et je n’ai pas utilisé jslint depuis des années.

128
Steven Lu

Extension de votre PATH avec:

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

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

Lance ça:

npm config get prefix

La valeur par défaut sous OS X est /usr/local, ce qui signifie que npm symétrise les fichiers binaires vers /usr/local/bin, qui devrait déjà figurer sur votre PATH (surtout si vous utilisez Homebrew).

Alors:

  1. npm config set prefix /usr/local si c'est autre chose, et
  2. N'utilisez pas Sudo avec npm! Selon le jslint docs , vous devriez juste pouvoir le npm install le.

Si vous avez installé npm en tant que Sudo (Sudo brew install), essayez de le réinstaller avec plain ol 'brew install. Homebrew est censé vous aider à rester libre Sudo-.

285
Trevor Burnham

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é le noeud avec Homebrew, essayez **** Notez, par commentaire, que cela pourrait ne pas être sûr. Cela a fonctionné pour moi mais pourrait avoir des conséquences inattendues. Il semble également que la dernière version de Homebrew installe correctement npm. Il est donc probable que j'essaierais brew update, brew doctor, brew upgrade node etc avant d'essayer ****:

npm update -gf

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

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

J'utilise brew et le préfixe était déjà configuré pour être:

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

J'ai remarqué que les dossiers bin et lib étaient la propriété de root, ce qui empêchait l'installation habituelle non-Sudo. Je les ai donc réappropriés à l'utilisateur.

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

Ensuite, je viens d'ajouter le chemin d'accès à mon fichier .bash_profile situé dans/Utilisateurs/[utilisateur].

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

si vous utilisez npm avec -g, n’avez pas besoin d’utiliser Sudo. 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.

3
Pascal Belloncle

Tout le monde a le même problème, il est lié à un conflit entre brew et npm. Vérifiez cette solution https://Gist.github.com/DanHerbert/9520689

1
Bdwey

La solution simple est ...

Il suffit de mettre en dessous de la commande:

  1. Sudo npm config get prefix

    si ce n'est pas quelque chose comme ces /usr/local, vous devez le réparer en utilisant la commande ci-dessous.

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

Maintenant ça marche à 100%

1
Yogesh Patil

J'ai réussi à réparer Vue Cli aucune erreur de commande en procédant comme suit:

  • Dans le terminal Sudo nano ~/.bash_profile pour modifier votre profil bash.
  • Ajouter export PATH=$PATH:/Users/[your username]/.npm-packages/bin
  • Sauvegarder le fichier et redémarrer le terminal
  • Vous devriez maintenant pouvoir utiliser vue create my-project et vue --version etc.

Je l’ai fait après avoir installé le dernier Vue Cli de https://cli.vuejs.org/

J'utilise généralement le fil, mais je l'ai installé globalement avec npm npm install -g @vue/cli. Vous pouvez aussi utiliser du fil si vous voulez yarn global add @vue/cli

Remarque: vous devrez peut-être d'abord le désinstaller globalement si vous l'avez déjà installé: npm uninstall -g vue-cli

J'espère que cela t'aides!

1
Mark Fasel

Essayez de courir:

PATH=$PATH:~/npm/bin

puis effectuez un test en exécutant express dans la ligne de commande. Cela a fonctionné pour moi.

0
kiko carisse

Sudo brasser n'est plus une option, donc si vous installez avec brouillon à ce stade, vous obtiendrez 2 choses vraiment odieuses: A: il aime installer dans /usr/local/opts ou selon cela,/usr/local/shared . Ce n’est pas un gros problème au début, mais j’ai eu des problèmes avec le nœud PATH, en particulier lorsque j’ai installé les peluches. B: vous êtes un peu coincé avec les commandes Sudo jusqu'à ce que vous désinstalliez et installiez le logiciel de cette façon ou que vous puissiez obtenir la pile de Bitnami

Je recommande cette méthode par rapport à l’option pile car elle est prête à fonctionner si vous avez plusieurs projets. Si vous utilisez la pile MEAN prédéfinie, vous devrez configurer des hôtes virtuels dans httpd.conf (plus pénible que XAMPP), ainsi que la mise à jour habituelle de vos extra/vhosts.conf et/etc/hosts pour chaque session supplémentaire. projet, sauf si vous souhaitez repointer et redémarrer votre serveur une fois la mise à jour effectuée.

0
angel

Si vous avez lié les packages de noeud à l'aide de la commande Sudo

Ensuite, accédez au dossier où node_modules sont installés 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 sur ce chemin, les modules peuvent être trouvés par noeud.

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

puis lancez la commande

ls -l

Cela donnera la liste de tous les nœuds_modules globaux et vous pourrez facilement voir les modules de nœuds liés.

0
selftaught91