Ho installato jshint usando sudo npm install -g jshint
, e sembra aver funzionato:
$which jshint
/usr/local/bin/jshint
Ancora in esecuzione jshint
o il suo equivalente percorso completo non sembra fare nulla. Non dà nemmeno un errore, semplicemente non fa nulla:
$jshint
$jshint --help
$jshint --verbose
$jshint --debug
$jshint admin.js
$jshint admin.js --verbose
$/usr/local/bin/jshint admin.js
Ho anche provato a collegare simbolicamente nodejs per questa risposta:
$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.
Cosa mi sto perdendo qui?
Modifica:ecco l'output da apt-cache policy nodejs npm
. Sto solo usando i pacchetti standard di Ubuntu 14.04, quindi non c'è niente di molto speciale in questo:
└─>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
Risposta accettata:
I repo ufficiali sono un pasticcio...
L'installazione di Node e npm tramite i repository ufficiali mi ha sempre dato problemi. Sospetto che ciò possa essere dovuto a strumenti che dipendono da node
, quando il comando effettivo su Ubuntu è nodejs
, motivo per cui la creazione di un collegamento simbolico dovrebbe lavoro. Ha funzionato per me nel mio rapido test su una macchina virtuale, ma dato che non ha funzionato per te, proviamo qualcos'altro...
Quindi, installa Node.JS in un modo diverso
In genere preferisco installare Node su Ubuntu usando NVM. Questo evita il problema del node
comando non definito su Ubuntu ed evita il pasticcio delle autorizzazioni che richiede l'uso di sudo
per installare i moduli npm.
Esegui le seguenti operazioni per tornare a una tabula rasa:
Rimuovi tutti i moduli globali che hai installato con npm (istruzioni qui):
sudo npm list -g --depth=0. | awk -F ' ' '{print $2}' | awk -F '@' '{print $1}' | sudo xargs npm remove -g
Rimuovi la cartella del nodo con collegamento simbolico:
sudo rm /usr/bin/node
Disinstalla le copie di nodejs
e npm
che hai installato tramite i repository di Ubuntu:
sudo apt-get remove --purge nodejs npm
Ripulisci qualsiasi altro cruft:
sudo apt-get autoremove
A questo punto, which node
, which nodejs
, which npm
e which jshint
non dovrebbero restituire nulla.
Reinstalla Node, saltando i repository ufficiali
Prendi l'ultima copia di NVM (potrebbe essere necessario sudo apt-get install curl
primo):
curl https://raw.githubusercontent.com/creationix/nvm/v0.15.0/install.sh | bash
Dì alla tua shell di usare nvm
source ~/.nvm/nvm.sh
Quindi installa una versione del nodo
nvm install 0.12 # or whatever the latest version is
E dì a nvm quale versione di Node vuoi usare
nvm use 0.12
Ora dovresti essere in grado di eseguire Node con il node
comando, dovresti essere in grado di installare moduli a livello globale senza sudo
e dovresti ritrovarti con una copia funzionante di jshint.
Se non vuoi eseguire nvm use v0.12
ogni volta che avvii una nuova sessione di terminale, puoi aggiungere nvm use v
al tuo ~/.bashrc
. Il v
non è speciale, corrisponderà solo a v*
e trova l'ultima versione. In alternativa potresti codificare una versione specifica.