Ich habe jshint mit sudo npm install -g jshint
installiert , und es scheint funktioniert zu haben:
$which jshint
/usr/local/bin/jshint
Dennoch wird jshint
ausgeführt oder sein vollständiges Pfadäquivalent scheint nichts zu tun. Es gibt auch keinen Fehler – es tut einfach nichts:
$jshint
$jshint --help
$jshint --verbose
$jshint --debug
$jshint admin.js
$jshint admin.js --verbose
$/usr/local/bin/jshint admin.js
Ich habe auch versucht, nodejs mit dieser Antwort zu symbolisieren:
$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.
Was übersehe ich hier?
Bearbeiten:Hier ist die Ausgabe von apt-cache policy nodejs npm
. Ich verwende nur die Standardpakete von Ubuntu 14.04, also ist das nichts Besonderes:
└─>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
Akzeptierte Antwort:
Die offiziellen Repos sind ein Durcheinander...
Die Installation von Node und npm über die offiziellen Repositories hat mir immer Probleme bereitet. Ich vermute, dass dies an Tools liegen könnte, die von node
abhängen , wenn der eigentliche Befehl auf Ubuntu nodejs
ist , weshalb das Erstellen eines Symlinks sollte Arbeit. Bei meinem Schnelltest in einer virtuellen Maschine hat es bei mir funktioniert, aber da es bei dir nicht funktioniert hat, versuchen wir etwas anderes …
Also installieren Sie Node.JS auf eine andere Art
Ich bevorzuge im Allgemeinen die Installation von Node auf Ubuntu mit NVM. Dadurch wird das Problem des node
vermieden Der Befehl ist unter Ubuntu nicht definiert und vermeidet das Durcheinander von Berechtigungen, das die Verwendung von sudo
erfordert um npm-Module zu installieren.
Gehen Sie wie folgt vor, um wieder auf Null zu kommen:
Entfernen Sie alle globalen Module, die Sie mit npm installiert haben (Anweisungen hier):
sudo npm list -g --depth=0. | awk -F ' ' '{print $2}' | awk -F '@' '{print $1}' | sudo xargs npm remove -g
Symlink-Knotenordner entfernen:
sudo rm /usr/bin/node
Deinstallieren Sie die Kopien von nodejs
und npm
die Sie über die Repositories von Ubuntu installiert haben:
sudo apt-get remove --purge nodejs npm
Bereinigen Sie alle anderen Cruft:
sudo apt-get autoremove
An dieser Stelle which node
, which nodejs
, which npm
, und which jshint
sollten alle nichts zurückgeben.
Node neu installieren und dabei die offiziellen Repositories überspringen
Holen Sie sich die neueste Kopie von NVM (möglicherweise müssen Sie sudo apt-get install curl
ausführen zuerst):
curl https://raw.githubusercontent.com/creationix/nvm/v0.15.0/install.sh | bash
Sagen Sie Ihrer Shell, dass sie nvm
verwenden soll
source ~/.nvm/nvm.sh
Installieren Sie dann eine Knotenversion
nvm install 0.12 # or whatever the latest version is
Und teilen Sie nvm mit, welche Version von Node Sie verwenden möchten
nvm use 0.12
Jetzt sollten Sie Node mit dem node
ausführen können Befehl sollten Sie in der Lage sein, Module global ohne sudo
zu installieren , und Sie sollten am Ende eine funktionierende Kopie von jshint haben.
Wenn Sie nvm use v0.12
Jedes Mal, wenn Sie eine neue Terminalsitzung starten, können Sie nvm use v
hinzufügen zu Ihrem ~/.bashrc
. Das v
ist nichts Besonderes, es passt einfach zu v*
und finden Sie die neueste Version. Alternativ könnten Sie eine bestimmte Version fest codieren.