Knoten: Befehl nicht gefunden


46

Ich verstehe nicht, warum der nodeBefehl nicht funktioniert, wohingegen nodejsfunktioniert:

$ node --version
zsh: command not found: node
$ nodejs --version
v0.10.15

Ich habe es versucht apt-get install nodejs, aber die neueste Version ist bereits installiert.

Und außerdem:

$ npm
zsh: command not found: npm

Ich dachte, npmwar in NodeJS> 0.10 enthalten?


kann dieser Beitrag Ihr Problem [Stackoverflow] lösen [1] [1]: stackoverflow.com/questions/13593902/node-command-not-found
Ahmed Al-battashi

@ AhmedAl-battashi Es hilft nicht, ich habe es bereits gelesen. NodeJS installiert ist , nodejsist in der PATH, aber nodeund npmnicht verfügbar sind , kann ich sie nicht auf meinem System finden überall.
Matthieu Napoli

2
Ich bin nicht ganz sicher, aber ich erinnere mich, dass der Grund, warum die nodeBinärdatei umbenannt wurde, ein Konflikt mit einem der genannten Pakete node(Amateur Packet Radio Node Program) war.
YJWONG

Sind Sie sicher, dass Sie suchen nodeund nicht nodejs? nodeist nicht das, was du denkst.
Braiam

@Braiam nodewird in jedem Tutorial verwendet, das ich gesehen habe
Matthieu Napoli

Antworten:


43

Das nodePaket hat nichts mit NodeJS zu tun. Informationen zum Knoten finden Sie hierInstallieren Sie den Knoten :

Amateur Packet Radio Node Programm (Übergangspaket)


Sie sollten stattdessen das nodejs Installieren Sie nodejsPaket installieren .

sudo apt-get install nodejs

Verwenden Sie es dann mit dem nodejsBefehl.

Der Grund, warum nodedies nicht funktioniert, liegt wahrscheinlich an Konflikten mit dem nodeoben verlinkten Originalpaket .


Wenn Sie möchten npm Installiere npm, müssen Sie das auch installieren.

sudo apt-get install npm

3
Ich wusste von dem nodePaket, verstehe jedoch nicht, warum ein Namenspaket einen Einfluss auf das Befehlszeilentool hat. Zum Beispiel installiere ich nicht php, aber php5-cli. Aber danke für die Antwort, ich war mir nicht sicher, ob die manuelle Installation npmein Problem darstellen würde, anscheinend ist es das nicht.
Matthieu Napoli

2
Wenn Sie das nodejs-legacyPaket installieren, können Sie entweder nodeoder verwenden nodejs.
Grooveplex

48

Ich stimme zu, das ist ein Problem, aber ich weiß nicht, warum es passiert.

Die Reparatur

Als Erstes erstellen Sie einfach eine symbolische Verknüpfung zwischen dem aufgerufenen nodeZeigen und der nodejsBinärdatei.

ln -s /usr/bin/nodejs /usr/bin/node

Das Problem

Einige Anleitungen, die ich für die Installation von Nodejs ( hier und hier ) gefunden habe, haben alle einen ähnlichen Code, um zu testen, ob die Installation korrekt durchgeführt wurde. Erstellen Sie also im Wesentlichen einen einfachen Server wie folgt:

// hello_node.js
var http = require('http');
http.createServer(function (req, res) {
  res.writeHead(200, {'Content-Type': 'text/plain'});
  res.end('Hello Node.js\n');
}).listen(8124, "127.0.0.1");
console.log('Server running at http://127.0.0.1:8124/');

und führe es dann in nodejs mit folgendem Befehl aus:

node hello_node.js

Und dann, als ich versuchte, npm zu verwenden, um etwas zu installieren, schlug es fehl und meldete die gleiche node not foundMeldung.


Ich habe das gleiche Problem, sudo apt-get install npm und anschließend folgende @ jlouzado-Empfehlung vervollständigen den Job. Nun gut funktioniert
user615274

5
Witziger Tipp: Es gibt ein NodeJS-Legacy- Paket, das den Symlink bereitstellt, angeblich aus Gründen der Kompatibilität mit "Legacy-Code", der sich immer noch darauf stützt.
Simon

1
@Simon Ich denke, es ist eine bessere Lösung, als einen symbolischen Link zu erstellen.
grooveplex

Jetzt zähle ich 3 Pakete, die ich installieren muss, wenn ich mit Node.js grundsätzlich irgendetwas mache. Ich habe versucht, diese eine Node.js-Bibliothek für wie eine Stunde zu installieren.
Sudo

Ich konnte nicht installieren, asciicast2gifda es während der Installation ausgeführt wird node install.jsund der Fehler angezeigt wird sh: 1: node: not found. Das behebt es.
Vinayak

26

Wie @ minerz029 schon sagte, gibt es einen Konflikt mit dem nodePaket. Wenn Sie den nodeBefehl dennoch benötigen (weil ein Skript nur nodezum Beispiel verwendet), müssen Sie das nodejs-legacyPaket folgendermaßen installieren :

apt-get install nodejs-legacy

Und erstelle keinen eigenen Symlink (besonders nicht in /usr/bin/). Dies liefert einen nodeBefehl für nodejs.


2
Es klappt. Ich denke, das ist besser als @ jlouzados Antwort.
Shawn Xie

es sei denn, Sie "fangen häufig von vorne an" mit der Installation Ihres Betriebssystems .... VIEL besser, apt Symlinks in bin verwalten zu lassen. Vielen Dank!
Mike

2

Versuche dies

curl -sL https://deb.nodesource.com/setup_6.x | sudo -E bash -

sudo apt-get install -y nodejs

:)


2
Warum installieren Sie nicht die neueste Version ?:curl -sL https://deb.nodesource.com/setup_8.x | sudo -E bash -
Karl

setup_6.x ist stabil
MUHASIN BABU

Die LTS-Richtlinie für Node.js Version 8 sieht vor, dass LTS jetzt aussteht. Es wird in einigen Monaten im Oktober 2017 LTS. Der Wartungszeitraum beginnt im April 2019 und die Wartung endet im Dezember 2019. Weitere Informationen siehe die tabelle
karel

1

Möglicherweise müssen Sie manuell installieren

sudo apt-get install npm

1
Ich habe überall gelesen, dass ich npm nicht manuell installieren sollte, weil es in> v0.10 enthalten war: / Ich bin ein wenig verloren
Matthieu Napoli

0

Eine schnelle Lösung für nvmBenutzer. Ich benutze nvm(Node Version Manager) und für mich den npmBefehl, den ich immer vor npmdiesem Befehl ausgeben muss nvm use 0.x(ersetzen Sie ihn 0.xdurch 0.11oder 0.10zum Beispiel durch die Version, die Sie verwenden möchten).


0

Wie bereits in minerz029 erwähnt , nodejswird die nodeBinärdatei in bestimmten Versionen des Pakets nicht bereitgestellt, da zuvor ein anderes Paket diesen Namen verwendet hat. Die Lösung ist so einfach wie folgt:

Node.js über den Paketmanager installieren | Debian- und Ubuntu-basierte Linux-Distributionen

Im Moment sind diese Schritte:

curl -sL https://deb.nodesource.com/setup_8.x | sudo -E bash -
sudo apt-get install -y nodejs

Am besten überprüfen Sie den Quelllink, um sicherzustellen, dass Sie die neueste Version verwenden.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.