Je suis plus prudent que d'habitude parce que j'ai été troublé par le comportement du npm
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
je trouve que la façon canonique d'accomplir cela est de sudo npm install -g jslint
fonctionner 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
en raison de /usr/local/share/npm/bin
ne pas être dans mon$PATH
.
1) Pourquoi n'a-t-il brew
pas installé le npm
bin
chemin global vers le chemin? Peut-être l'a-t-il fait, mais quelque chose zsh
ne fait que le gâcher. Où pourrais-je trouver cela?
2) Dois-je faire ça? (Ajouter :/usr/local/share/npm/bin
au fichier exporté $PATH
en bas de mon~/.zshrc
)
Il semble que ce n'est pas la bonne façon de le faire car si j'installe quelque chose d'autre plus tard (en utilisant Homebrew ou quelque chose), je devrai l'ajouter à mon script de démarrage zsh pour définir le chemin. Je suppose que dans ce cas particulier, c'est juste une question denpm install -g
ne pas créer les bons liens symboliques dans un emplacement "approprié" (comme /usr/local/bin
peut-être).
Je pense que je vais créer manuellement des liens symboliques à l'intérieur /usr/local/bin
pour tous les programmes avec lesquels j'ai des problèmes et cela devrait être assez bon pour mes besoins.
ÉDITER : Je mets à jour cela en 2019, car cette vieille question est populaire mais maintenant obsolète à la fois en termes de flux de travail personnel et également en termes de meilleure façon d'installer le nœud et de gérer ses différentes dépendances.
Mon flux de travail personnel consiste maintenant à utiliser le programme d'installation obtenu à partir de nodejs.org pour installer node sur les systèmes. En fait, je fais plus confiance à cela qu'au package homebrew lui-même, car il sait mieux gérer les fichiers. Si vous souhaitez changer 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 de nodejs.org pour 10.15 pour votre système d'exploitation. Tenter de mettre à niveau le nœud installé via homebrew s'est toujours avéré être une approche plus difficile dans mon expérience.
En outre, la chose la plus importante à souligner est que l'utilisation de sudo comme indiqué dans mon exemple d'installation npm de jslint ci-dessus est fortement déconseillée; Je suis à peu près certain que les packages homebrew ne doivent jamais être installés ou interagis avec le superutilisateur. Cela ne devrait pas être nécessaire et entraînera des maux de tête pour les autorisations de fichiers!
De plus, je recommande ESLint plutôt que jslint, et je n'ai pas utilisé jslint depuis des années.
Réponses:
Extension de votre
PATH
avec:n'est pas une mauvaise idée. Cela dit, vous ne devriez pas avoir à le faire.
Lance ça:
La valeur par défaut sur OS X est
/usr/local
, ce qui signifie que npm établira un lien symbolique vers les binaires/usr/local/bin
, qui devraient déjà être sur votrePATH
(surtout si vous utilisez Homebrew).Alors:
npm config set prefix /usr/local
si c'est autre chose, etsudo
avec npm! Selon la documentation jslint , vous devriez juste pouvoir le fairenpm install
.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 à restersudo
libre.la source
npm
refuse d'installerjslint
globalement, cependant.npm install -g jslint
échoue.Error: EACCES, open '/Users/user/.npm/564fcf84-jslint.lock'
chown
/usr/local
si je veux que des scripts y écrivent des liens sans exigersudo
? Que diriez-vous de suivre ceci pour configurer nom / node~/.local
ou quelque chose?root
dans mon~/
répertoire (parsudo rm -r
letmp/
et a.npm/
), puis unnpm install -g jslint
a fonctionné à merveille. C'est bien que npm lui-même soit un programme de nœuds et soit un peu une preuve de concept en ligne de commande JS pour moi que je commence à apprécier maintenant que je le comprends un peu mieux.chown
-ing/usr/local
et tout ce qu'il contient est une pratique courante sur OS X. Voir le dépannage page de sur le wiki Homebrew.chown
ing de/usr/local
s'est déjà produit sur ma machine sinonnpm
et les autres fonctionner sanssudo
ne pourraient pas déposer de liens dans,/usr/local/bin/
etc.J'ai passé un certain temps sur ce problème 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 nœud en utilisant Homebrew, essayez **** Notez par commentaires que cela peut 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. Donc , probablement que je voudrais essayer
brew update
,brew doctor
,brew upgrade node
etc avant d' essayer ****:Ou, si vous souhaitez installer node avec Homebrew et faire fonctionner npm, utilisez:
la source
J'utilise brew et le préfixe était déjà défini sur:
J'ai remarqué que le dossier bin et lib appartenaient à root, ce qui empêchait l'installation habituelle non sudo, donc je les ai restitués à l'utilisateur
Ensuite, je viens d'ajouter le chemin d'accès à mon .bash_profile qui se trouve dans / Users / [user]
la source
brew ne devrait pas vous obliger à utiliser sudo même lorsque vous exécutez npm avec -g. Cela pourrait en fait créer plus de problèmes sur la route.
Typiquement, brew ou port vous permet de mettre à jour votre chemin afin de ne pas risquer de gâcher votre .zshrc, .bashrc, .cshrc, ou toute autre saveur de shell que vous utilisez.
la source
sudo
. J'utilisais sudonpm
(parce que quelque chose que j'ai lu me l'a dit). Je suis curieux de savoir où chercher comment le chemin est tracé. Il semble en fait que le programme d'zsh
installation exécute quelque chose qui finit par coder en dur le chemin (au moment de l'installation dezsh
) dans le.zshrc
que je n'aime pas tellementnpm
doit être installé dans/usr/local
. L'/usr
espace de noms du chemin est réservé aux packages officiels de votre distribution./usr/local/bin
dans votre $ PATH ou non, est un problème zsh.J'ai réussi à corriger l'erreur de commande Vue Cli no en procédant comme suit:
sudo nano ~/.bash_profile
pour modifier votre profil bash.export PATH=$PATH:/Users/[your username]/.npm-packages/bin
vue create my-project
etvue --version
etc.Je l'ai fait après avoir installé le dernier Vue Cli de https://cli.vuejs.org/
J'utilise généralement du fil, mais je l'ai installé globalement avec npm
npm install -g @vue/cli
. Vous pouvez aussi utiliser du fil si vous le souhaitezyarn 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!
la source
Tout le monde a le même problème qu'il est lié à un conflit entre brew et npm Veuillez vérifier cette solution https://gist.github.com/DanHerbert/9520689
la source
Essayez de courir:
puis faites un test en exécutant
express
dans la ligne de commande. Cela a fonctionné pour moi.la source
~/.npm/bin
ou un tel. il ne devrait pas y avoir denpm
répertoire ajouté à votre répertoire personnel.Si vous avez lié les packages de nœuds à l'aide de la commande sudo
Accédez ensuite au dossier où les 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 nœud.
Windows XP -% USERPROFILE% \ Application Data \ npm \ node_modules Windows 7 -% AppData% \ npm \ node_modules
puis exécutez la commande
Cela donnera la liste de tous les node_modules globaux et vous pourrez facilement voir les modules de nœuds liés.
la source
sudo brew n'est plus une option, donc si vous installez avec brew à ce stade, vous obtiendrez 2 choses vraiment désagréables: A: il aime s'installer dans
/usr/local/opts
ou selon ceci, / 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é lint. B: vous êtes en quelque sorte coincé avec les commandes sudo jusqu'à ce que vous le désinstalliez et l'installiez de cette façon ou que vous puissiez obtenir la pile de BitnamiJe recommande cette méthode par rapport à l'option stack car elle est prête à l'emploi si vous avez plusieurs projets. Si vous optez pour la pile MEAN prédéfinie, vous devrez configurer des hôtes virtuels dans httpd.conf (plus pénible dans cette pile que XAMPP) plus la mise à jour habituelle de votre extra / vhosts.conf et / etc / hosts pour chaque projet, à moins que vous ne souhaitiez rediriger et redémarrer votre serveur une fois la mise à jour terminée.
la source
La solution simple est ...
Mettez simplement la commande ci-dessous:
sudo npm config get prefix
si ce n'est pas quelque chose comme ça
/usr/local
, vous devez le réparer en utilisant la commande ci-dessous.sudo npm config set prefix /usr/local
...Maintenant ça marche à 100%
la source