noeud: commande non trouvée

47

Je ne comprends pas pourquoi la nodecommande ne fonctionnera pas, alors que cela nodejsfonctionne:

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

J'ai essayé apt-get install nodejs, mais la dernière version est déjà installée.

Et en plus:

$ npm
zsh: command not found: npm

Je pensais npmêtre inclus dans NodeJS> 0.10?

Matthieu Napoli
la source
peut ce poste résoudre votre problème [Stackoverflow] [1] [1]: stackoverflow.com/questions/13593902/node-command-not-found
Ahmed Al-battashi
@ AhmedAl-Battashi Cela n'aide pas, je l'ai déjà lu. NodeJS est installé, nodejsest dans le chemin, mais nodeet npmne sont pas disponibles, je ne peux pas les trouver nulle part sur mon système.
Matthieu Napoli
2
Je ne suis pas tout à fait sûr, mais je me souviens que si le nodebinaire a été renommé, c'est parce qu'il était en conflit avec l'un des paquetages appelé node(Amateur Packet Radio Node Program).
Yjwong
Êtes-vous sûr de ce que vous cherchez nodeet pas nodejs? nodeCe n'est pas ce que vous croyez.
Braiam
@Braiam nodeest utilisé dans tous les tutoriels que j'ai vus
Matthieu Napoli le

Réponses:

44

Le nodepaquet n'a aucun lien avec NodeJS. Voir ici pour des informations sur le noeudNoeud d'installation :

Programme de nœud radio amateur (paquet transitoire)


Vous devriez plutôt installer le nodejs Installer des noeudspaquet.

sudo apt-get install nodejs

utilisez-le ensuite avec la nodejscommande.

La raison pour laquelle nodecela ne fonctionne pas est probablement à cause de conflits avec le nodepaquet original lié ci-dessus.


Si vous le souhaitez npm Installer npm, vous devrez également l'installer.

sudo apt-get install npm
kiri
la source
3
Je connaissais le nodepackage, mais je ne vois pas pourquoi un package de noms a une influence sur l'outil de ligne de commande. Par exemple, je n'installe pas php, mais php5-cli. Mais merci pour la réponse, je ne savais pas si l’installation manuelle npmposerait un problème, ce n’est apparemment pas le cas.
Matthieu Napoli
2
Installation du nodejs-legacypackage vous permet d' utiliser soit nodeou nodejs.
grooveplex
48

Je suis d'accord, c'est un peu un problème mais je ne sais pas pourquoi cela se produit.

Le correctif

Tout d’abord, créez simplement un lien symbolique appelé nodepointant vers le nodejsbinaire.

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

Le problème

Quelques guides que j'ai trouvés pour l'installation de Nodejs ( ici et ici ) ont tous un code similaire pour tester si l'installation s'est bien déroulée. Donc, essentiellement, créez un serveur simple comme ceci:

// 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/');

puis exécutez-le dans nodejs avec les éléments suivants:

node hello_node.js

Et puis, lorsque j'essayais d'utiliser npm pour installer quelque chose, il échouait et signalait le même node not foundmessage.

jlouzado
la source
J'ai le même problème: sudo apt-get install npm puis, après la recommandation @jlouzado, terminez le travail. Maintenant fonctionne bien
user615274
5
Astuce amusante: il existe un paquet nodejs-legacy qui fournit le lien symbolique, censé être compatible avec le "code hérité" qui en dépend toujours.
Simón
1
@ Simón Je pense que c'est une meilleure solution que de créer un lien symbolique.
grooveplex
Alors maintenant, je compte 3 paquets que je dois installer si je ne fais pratiquement rien avec Node.js. J'essaie d'installer cette bibliothèque Node.js depuis environ une heure.
sudo
Je n'ai pas pu installer asciicast2gifcar lors de l'installation, il s'exécute node install.jset le message d'erreur s'affiche sh: 1: node: not found. Cela corrige le problème.
Vinayak
26

Comme @ minerz029 déjà dit, il y a un conflit avec le nodepaquet. Mais si vous avez toujours besoin de la nodecommande (car un script utilise uniquement à nodetitre d'exemple), la méthode correcte consiste à installer le nodejs-legacypackage:

apt-get install nodejs-legacy

et ne pas créer un lien symbolique par vous-même (surtout pas dans /usr/bin/). Cela fournira une nodecommande pour nodejs.

F.Raab
la source
2
Ça marche. Je pense que c'est mieux que la réponse de @ jlouzado.
Shawn Xie
à moins que vous ne commenciez souvent à partir de zéro avec l' installation de votre système d'exploitation ... BEAUCOUP mieux de laisser apt gérer les liens symboliques dans bin. Merci!
Mike
2

Essaye ça

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

sudo apt-get install -y nodejs

:)

MUHASIN BABU
la source
2
Pourquoi n'installes-tu pas la dernière version ?:curl -sL https://deb.nodesource.com/setup_8.x | sudo -E bash -
karel
setup_6.x est stable
MUHASIN BABU le
La politique LTS pour Node.js version 8 est la suivante: en attente de LTS, le statut de LTS commence dans quelques mois en octobre 2017, la période de maintenance commence en avril 2019 et se termine en décembre 2019. Pour plus d'informations voir le tableau dans cette réponse: askubuntu.com/questions/626383/…
karel le
1

pouvez-vous avoir besoin d'installer manuellement

sudo apt-get install npm
Ahmed Al-Battashi
la source
1
J'ai lu partout que je ne devrais pas installer manuellement npm car il était inclus dans> v0.10: / Je suis un peu perdu
Matthieu Napoli
0

Une solution rapide pour les nvmutilisateurs. J'utilise nvm(gestionnaire de version de noeud) et pour moi d'utiliser la npmcommande, je dois toujours émettre avant npmcette commande nvm use 0.x(remplacer 0.xpar 0.11ou 0.10par exemple, la version que vous souhaitez utiliser).

Karl Morrison
la source
0

Comme mentionné précédemment par minerz029 , certaines versions du nodejspaquet ne fourniront pas le nodebinaire car un autre paquet utilise déjà ce nom. La solution est aussi simple que de suivre les étapes d'installation sur le site Web de Node:

Installation de Node.js via le gestionnaire de paquets | Distributions Linux basées sur Debian et Ubuntu

Pour le moment, ces étapes sont les suivantes:

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

Mais il serait préférable de vérifier le lien source pour vous assurer que vous utilisez la dernière version.

bmaupin
la source