Wie kann ich jshint zum Laufen bringen?

7

Ich habe jshint mit installiert sudo npm install -g jshintund es scheint funktioniert zu haben:

$which jshint
/usr/local/bin/jshint

Das Laufen jshintoder sein vollständiges Pfadäquivalent scheint jedoch nichts zu bewirken. Es gibt auch keinen Fehler - es macht 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 gemäß dieser Antwort zu verknüpfen :

$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 fehlt mir hier?

Bearbeiten: Hier ist die Ausgabe von apt-cache policy nodejs npm. Ich verwende nur die Standardpakete von Ubuntu 14.04, daher ist daran 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
Jonathan
quelle
Was ist die Ausgabe von apt-cache policy nodejs npm?
Salem
nodejs: Installiert: 0.10.25 ~ dfsg2-2ubuntu1 Kandidat: 0.10.25 ~ dfsg2-2ubuntu1 Versionstabelle: *** 0.10.25 ~ dfsg2-2ubuntu1 0 500 us.archive.ubuntu.com/ubuntu vertrauenswürdig / Universum amd64 Pakete 100 / var / lib / dpkg / status npm: Installiert: 1.3.10 ~ dfsg-1 Kandidat: 1.3.10 ~ dfsg-1 Versionstabelle: *** 1.3.10 ~ dfsg-1 0 500 us.archive.ubuntu.com / Ubuntu Trusty / Universum amd64 Pakete 100 / var / lib / dpkg / status
Jonathan
@ Jon Bitte poste das Ergebnis des Befehls in den Text deiner Frage. In diesem Fall ist das Ergebnis nicht verständlich. danke
αғsнιη
@ KasiyA: hinzugefügt. Ich kann mir nicht vorstellen, dass es so hilfreich sein wird, da sich die Versionen nicht von den Standardversionen 14.04 unterscheiden.
Jonathan

Antworten:

9

Die offiziellen Repos sind ein Chaos ...

Die Installation von Node und npm über die offiziellen Repositories hat mir immer Probleme bereitet. Ich vermute , dass dies zu Werkzeuge je nach Grund sein könnte node, wenn der tatsächliche Befehl auf Ubuntu ist nodejs, weshalb ein symbolischer Link zu schaffen sollte funktionieren. Bei meinem Schnelltest in einer virtuellen Maschine hat es bei mir funktioniert, aber da es bei Ihnen nicht funktioniert hat, versuchen wir etwas anderes ...

Installieren Sie Node.JS also anders

Im Allgemeinen bevorzuge ich die Installation von Node unter Ubuntu mit NVM . Dadurch wird vermieden, dass der nodeBefehl unter Ubuntu nicht definiert wird, und es wird vermieden, dass die Berechtigungen durcheinander geraten , die sudozur Installation von npm-Modulen erforderlich sind.

Gehen Sie wie folgt vor, um zu einer sauberen Tafel zurückzukehren:

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

Entfernen Sie den verknüpften Knotenordner:

sudo rm /usr/bin/node

Deinstallieren Sie die Kopien von nodejsund npmdie Sie über die Ubuntu-Repositorys installiert haben:

sudo apt-get remove --purge nodejs npm

Reinigen Sie alle anderen Cruft:

sudo apt-get autoremove

An diesem Punkt which node, which nodejs, which npm, und which jshintsollte alle Rückkehr nichts.

Installieren Sie Node neu und überspringen Sie die offiziellen Repositories

Holen Sie sich die neueste Version von NVM (möglicherweise müssen Sie sudo apt-get install curlzuerst):

curl https://raw.githubusercontent.com/creationix/nvm/v0.15.0/install.sh | bash

Sagen Sie Ihrer Shell, sie zu benutzen nvm

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 in der Lage sein, Node mit dem nodeBefehl auszuführen , Module global ohne zu installieren sudound eine Arbeitskopie von jshint zu erhalten.

Wenn Sie nicht nvm use v0.12jedes Mal ausführen möchten, wenn Sie eine neue Terminalsitzung starten, können Sie nvm use vIhre hinzufügen ~/.bashrc. Das vist nichts Besonderes, es wird nur übereinstimmen v*und die neueste Version finden. Alternativ können Sie eine bestimmte Version fest codieren.

Michael Martin-Smucker
quelle
Nachdem ich Ihrem Handbuch gefolgt bin, muss ich bei jeder neuen Shell-Sitzung die Shell explizit anweisen, den Knoten von nvm zu verwenden, indem ich "nvm use v0.10" ausführe. Oder die Sitzung sagt, dass der Knoten nicht installiert ist und empfahl mir, ihn mit apt-get zu installieren. Wie auch immer, ich kann dafür sorgen, dass die Datei node.js von nvm standardmäßig in jeder Shell-Sitzung verwendet wird. Ich dachte daran, den Knoten auf die Binärdatei in ~ / nvm / v0.10.38 / zu aliasen, aber es scheint keine gute Lösung zu sein?
Jimchim
@jimchim Öffne ~/.bashrcund füge die Zeile hinzu nvm use v. Das vist nichts Besonderes, aber es sollte zu jeder Version (z. B. v0.12.2) passen, damit nvm die neueste auswählen kann.
Michael Martin-Smucker