Je suis plus prudent que d’habitude car j’ai été déconcerté par le comportement de npm
dans le passé.
Je suis sur un Mac et j’ai installé node.js via le brew install node
.
Maintenant que je veux lancer jslint.js
sur la ligne de commande en tant que commande jslint
je trouve que la manière canonique d’accomplir ceci est sudo npm install -g jslint
qui a été exécuté 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
à cause de /usr/local/share/npm/bin
n’étant pas dans mon $PATH
.
1) Pourquoi le brew
n’a-t-il pas installé le chemin global npm
bin
vers le chemin? Peut-être que c’était le cas, mais quelque chose que zsh
fait est de foirer. Où pourrais-je trouver ça?
2) Dois-je faire cela? (Ajoutez :/usr/local/share/npm/bin
au $PATH
exporté en bas de mon ~/.zshrc
)
Il semble que ce ne soit pas la bonne façon de procéder car si j’installe quelque chose plus tard (en utilisant Homebrew ou quelque chose d’autre), je devrai l’append à mon script de démarrage zsh pour définir le chemin. Je suppose que dans ce cas particulier, il suffit que npm install -g
ne fasse pas les bons liens symboliques dans un “bon” emplacement (comme /usr/local/bin
peut-être).
Je pense que ce que je vais faire est de créer manuellement des liens symboliques dans /usr/local/bin
pour tous les programmes avec lesquels j’ai des problèmes et cela devrait être suffisant pour mes besoins.
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 établira un lien symbolique entre les binarys dans /usr/local/bin
, qui devrait déjà figurer sur votre PATH
(en particulier si vous utilisez Homebrew).
Alors:
npm config set prefix /usr/local
si c’est autre chose, et sudo
avec npm! Selon les documents jslint , vous devriez juste pouvoir l’ npm install
. Si vous avez installé npm comme sudo ( sudo brew install
), essayez de le réinstaller avec plain ol ‘ brew install
. Homebrew est censé vous aider à restr libre de sudo
.
Passé un certain temps sur ce problème, et le commutateur PATH n’a pas aidé. 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 en utilisant Homebrew, essayez **** Remarque par commentaire que cela pourrait ne pas être sûr. Cela a fonctionné pour moi, mais pourrait avoir des conséquences imprévues. Il semble également que la dernière version de Homebrew installe correctement npm. Il est donc probable que j’essayerais de brew update
brew doctor
, de brew upgrade node
etc. avant d’essayer ****:
npm update -gf
Ou, si vous souhaitez installer le noeud avec Homebrew et que npm fonctionne, utilisez:
brew install node --without-npm curl -L https://npmjs.org/install.sh | sh
J’utilise le armsage et le préfixe était déjà configuré pour:
$ 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 non sudo habituelle, donc je les ai possédés à nouveau à l’utilisateur
$ cd /Users/[user]/.node $ chown -R [user]:[group] lib $ chown -R [user]:[group] bin
Ensuite, je viens d’append le chemin d’access à mon fichier .bash_profile situé dans / Users / [user]
PATH=$PATH:~/.node/bin
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 par la suite.
En règle générale, brew ou port vous permet de mettre à jour votre chemin afin de ne pas risquer de déconner votre fichier .zshrc, .bashrc, .cshrc ou la version de shell que vous utilisez.
Tout le monde a le même problème, c’est lié à un conflit entre l’infusion et le npm. Veuillez vérifier cette solution https://gist.github.com/DanHerbert/9520689
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.
Si vous avez lié les packages de nœuds à l’aide de la commande sudo
Ensuite, allez dans le 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 nœud.
Windows XP -% USERPROFILE% \ Application Data \ npm \ node_modules Windows 7 -% AppData% \ npm \ node_modules
puis exécutez la commande
ls -l
Cela donnera la liste de tous les modules_noeud globaux et vous pourrez facilement voir les modules de noeud liés.
sudo brew n’est plus une option, donc si vous installez avec brew à ce stade, vous allez obtenir 2 choses vraiment désagréables: A: il aime installer dans /usr/local/opts
ou selon ceci, / usr / local / partagé. Ce n’est pas un gros problème au début, mais j’ai eu des problèmes avec le noeud PATH en particulier lorsque j’ai installé des peluches. B: vous êtes en quelque sorte coincé avec les commandes sudo jusqu’à ce que vous désinstallez et installez-le de cette façon ou vous pouvez obtenir la stack de Bitnami
Je recommande cette méthode par rapport à l’option stack car elle est prête à l’emploi si vous avez plusieurs projets. Si vous utilisez la stack MEAN prédéfinie, vous devrez configurer des hôtes virtuels dans httpd.conf (plus de problèmes dans cette stack que XAMPP), plus la mise à jour habituelle de vos fichiers extra / vhosts.conf et / etc / hosts pour chaque projet, à moins que vous ne souhaitiez regrouper et redémarrer votre serveur lorsque vous avez terminé la mise à jour.