Nainstaloval jsem jshint pomocí sudo npm install -g jshint
a zdá se, že to fungovalo:
$which jshint
/usr/local/bin/jshint
Přesto běží jshint
nebo jeho ekvivalent úplné cesty nic nedělá. Ani to nehlásí chybu – prostě nic nedělá:
$jshint
$jshint --help
$jshint --verbose
$jshint --debug
$jshint admin.js
$jshint admin.js --verbose
$/usr/local/bin/jshint admin.js
Také jsem zkusil symbolické propojení nodejs podle této odpovědi:
$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.
Co mi tu chybí?
Upravit:zde je výstup z apt-cache policy nodejs npm
. Právě používám standardní balíčky Ubuntu 14.04, takže na tom není nic zvláštního:
└─>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
Přijatá odpověď:
Oficiální repozitáře jsou nepořádek…
Instalace Node a npm přes oficiální repozitáře mi vždy dělala potíže. Mám podezření, že by to mohlo být způsobeno nástroji závislými na node
, když skutečný příkaz na Ubuntu je nodejs
, a proto vytvoření symbolického odkazu by mělo práce. Fungovalo to pro mě v mém rychlém testu na virtuálním počítači, ale protože to nefungovalo pro vás, zkusme něco jiného…
Nainstalujte tedy Node.JS jiným způsobem
Obecně dávám přednost instalaci Node na Ubuntu pomocí NVM. Tím se vyhnete problému s node
příkaz není definován na Ubuntu a vyhýbá se nepořádku s oprávněními, který vyžaduje použití sudo
k instalaci modulů npm.
Chcete-li se vrátit k čistému štítu, postupujte takto:
Odeberte všechny globální moduly, které jste nainstalovali pomocí npm (pokyny zde):
sudo npm list -g --depth=0. | awk -F ' ' '{print $2}' | awk -F '@' '{print $1}' | sudo xargs npm remove -g
Odebrat složku symbolického uzlu:
sudo rm /usr/bin/node
Odinstalujte kopie nodejs
a npm
které jste nainstalovali prostřednictvím repozitářů Ubuntu:
sudo apt-get remove --purge nodejs npm
Vyčistěte jakýkoli jiný cruft:
sudo apt-get autoremove
V tomto okamžiku which node
, which nodejs
, which npm
a which jshint
by všichni neměli nic vrátit.
Přeinstalujte Node a vynechejte oficiální úložiště
Získejte nejnovější kopii NVM (možná budete muset sudo apt-get install curl
první):
curl https://raw.githubusercontent.com/creationix/nvm/v0.15.0/install.sh | bash
Řekněte svému shellu, aby použil nvm
source ~/.nvm/nvm.sh
Poté nainstalujte verzi uzlu
nvm install 0.12 # or whatever the latest version is
A řekněte nvm, kterou verzi Node chcete použít
nvm use 0.12
Nyní byste měli být schopni spustit Node s node
měli byste být schopni instalovat moduly globálně bez sudo
a měli byste skončit s pracovní kopií jshint.
Pokud nechcete spouštět nvm use v0.12
pokaždé, když zahájíte novou relaci terminálu, můžete přidat nvm use v
do vašeho ~/.bashrc
. v
není speciální, bude pouze odpovídat v*
a najít nejnovější verzi. Případně můžete napevno naprogramovat konkrétní verzi.