web-dev-qa-db-fra.com

Comment puis-je obtenir jshint au travail?

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
7
Jonathan

Les restes officiels sont un désordre ...

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 ...

Donc, installez Node.JS d'une manière différente

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.

Procédez comme suit pour revenir à une table rase:

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.

Réinstallez Node en ignorant les dépôts officiels.

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.