J'ai installé jshint en utilisant Sudo npm install -g jshint
, et cela semble avoir fonctionné:
$which jshint
/usr/local/bin/jshint
Pourtant, lancer jshint
ou son équivalent de chemin complet ne semble rien faire. Cela ne donne pas d'erreur non plus - cela ne fait rien:
$jshint
$jshint --help
$jshint --verbose
$jshint --debug
$jshint admin.js
$jshint admin.js --verbose
$/usr/local/bin/jshint admin.js
J'ai aussi essayé de faire des liens symboliques avec nodejs per cette réponse :
$Sudo ln -s /usr/bin/nodejs /usr/bin/node
$jshint admin.js --verbose
$jshint admin.js
$jshint --help
$man jshint
No manual entry for jshint
See 'man 7 undocumented' for help when manual pages are not available.
Qu'est-ce que j'oublie ici?
Edit: voici le résultat de apt-cache policy nodejs npm
. J'utilise simplement les paquets standards Ubuntu 14.04, il n'y a donc rien de très particulier à ce sujet:
└─>apt-cache policy nodejs npm
nodejs:
Installed: 0.10.25~dfsg2-2ubuntu1
Candidate: 0.10.25~dfsg2-2ubuntu1
Version table:
*** 0.10.25~dfsg2-2ubuntu1 0
500 http://us.archive.ubuntu.com/ubuntu/ trusty/universe AMD64 Packages
100 /var/lib/dpkg/status
npm:
Installed: 1.3.10~dfsg-1
Candidate: 1.3.10~dfsg-1
Version table:
*** 1.3.10~dfsg-1 0
500 http://us.archive.ubuntu.com/ubuntu/ trusty/universe AMD64 Packages
100 /var/lib/dpkg/status
L'installation de Node et de npm via les référentiels officiels m'a toujours causé des problèmes. Je suppose que cela pourrait être dû à des outils dépendant de node
, lorsque la commande réelle sur Ubuntu est nodejs
, raison pour laquelle la création d'un lien symbolique devrait fonctionne. Cela a fonctionné pour moi lors de mon test rapide sur une machine virtuelle, mais comme cela ne fonctionnait pas pour vous, essayons autre chose ...
Je préfère généralement installer Node sur Ubuntu en utilisant NVM . Cela évite le problème de la non-définition de la commande node
sur Ubuntu, ainsi que le désordre des autorisations qui nécessite l’utilisation de Sudo
pour installer les modules npm.
Supprimez tous les modules globaux que vous avez installés avec npm ( instructions ici ):
Sudo npm list -g --depth=0. | awk -F ' ' '{print $2}' | awk -F '@' '{print $1}' | Sudo xargs npm remove -g
Supprimer le dossier du nœud lié par un lien symbolique:
Sudo rm /usr/bin/node
Désinstallez les copies de nodejs
et npm
que vous avez installées via les référentiels Ubuntu:
Sudo apt-get remove --purge nodejs npm
Nettoyez toute autre crue:
Sudo apt-get autoremove
À ce stade, which node
, which nodejs
, which npm
et which jshint
ne doivent tous rien renvoyer.
Prenez la dernière copie de NVM (vous devrez peut-être commencer par Sudo apt-get install curl
):
curl https://raw.githubusercontent.com/creationix/nvm/v0.15.0/install.sh | bash
Dites à votre shell d'utiliser nvm
source ~/.nvm/nvm.sh
Puis installez une version de noeud
nvm install 0.12 # or whatever the latest version is
Et dites à nvm quelle version de Node vous voulez utiliser
nvm use 0.12
Vous devriez maintenant pouvoir exécuter Node avec la commande node
, vous devriez pouvoir installer des modules globalement sans Sudo
et obtenir une copie de travail de jshint.
Si vous ne souhaitez pas exécuter nvm use v0.12
à chaque fois que vous démarrez une nouvelle session de terminal, vous pouvez ajouter nvm use v
à votre ~/.bashrc
. La v
n'est pas spéciale, elle correspond simplement à v*
et trouve la dernière version. Sinon, vous pouvez coder en dur une version spécifique.