nodo: comando non trovato


47

Non capisco perché il nodecomando non funzionerà, mentre nodejsfunziona:

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

Ho provato apt-get install nodejs, ma l'ultima versione è già installata.

E inoltre:

$ npm
zsh: command not found: npm

Pensavo npmfosse incluso in NodeJS> 0.10?


possa questo post risolvere il tuo problema [Stackoverflow] [1] [1]: stackoverflow.com/questions/13593902/node-command-not-found
Ahmed Al-battashi

@ AhmedAl-battashi Non aiuta, l'ho già letto. NodeJS è installato, nodejsè nel PERCORSO, ma nodee npmnon sono disponibili, non riesco a trovarli da nessuna parte sul mio sistema.
Matthieu Napoli,

2
Non ne sono del tutto sicuro, ma ricordo che il motivo per cui il nodebinario è stato rinominato era perché era in conflitto con uno dei pacchetti chiamati node(Programma di nodo radio pacchetto amatoriale).
yjwong,

Sei sicuro che stai cercando nodee no nodejs? nodenon è quello che pensi che sia.
Braiam,

@Braiam nodeè usato in tutti i tutorial che ho visto
Matthieu Napoli

Risposte:


44

Il nodepacchetto non è correlato a NodeJS. Vedi qui per informazioni sul nodoInstalla nodo :

Programma di nodo radio pacchetto amatoriale (pacchetto di transizione)


Dovresti invece installare il nodejs Installa nodejspacchetto.

sudo apt-get install nodejs

quindi usalo con il nodejscomando.

Il motivo per cui nodenon funziona è probabilmente a causa di conflitti con il nodepacchetto originale collegato sopra.


Se lo desideri npm Installa npm, dovrai installarlo anche tu.

sudo apt-get install npm

3
Conoscevo il nodepacchetto, tuttavia non vedo perché un pacchetto nome abbia qualche influenza sullo strumento da riga di comando. Ad esempio, non installo php, ma php5-cli. Ma grazie per la risposta, non ero sicuro che l'installazione manuale npmsarebbe un problema, a quanto pare non lo è.
Matthieu Napoli,

2
L'installazione del nodejs-legacypacchetto consente di utilizzare nodeo nodejs.
grooveplex,

48

Sono d'accordo, questo è un po 'un problema ma non so perché stia accadendo.

La correzione

Per prima cosa, basta creare un collegamento simbolico da chiamato che nodepunta al nodejsbinario.

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

Il problema

Molte guide che ho trovato per l'installazione di Nodejs ( qui e qui ) hanno tutte un codice simile per verificare se l'installazione è avvenuta correttamente. Quindi essenzialmente crea un server semplice come questo:

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

e quindi eseguirlo in nodejs con il seguente:

node hello_node.js

E poi, quando stavo cercando di usare npm per installare qualcosa, non riuscivo e riferivo lo stesso node not foundmessaggio.


Ho lo stesso problema, sudo apt-get install npm e poi seguendo la raccomandazione @jlouzado completa il lavoro. Ora funziona bene
user615274

5
Suggerimento divertente: esiste un pacchetto nodejs-legacy che fornisce il collegamento simbolico, presumibilmente per la compatibilità con il "codice legacy" che si basa ancora su di esso.
Simón,

1
@ Simón Penso che sia una soluzione migliore che creare un collegamento simbolico.
grooveplex,

Quindi ora sto contando 3 pacchetti che devo installare se sto praticamente facendo qualcosa con Node.js. Ho provato a installare questa libreria Node.js per circa un'ora.
sudo,

Non sono stato in grado di installare asciicast2gifperché durante l'installazione funziona node install.jse ottengo l'errore sh: 1: node: not found. Questo lo risolve.
Vinayak il

26

Come @ minerz029 ha già detto che c'è un conflitto con il nodepacchetto. Ma se hai ancora bisogno del nodecomando (perché uno script usa solo nodeper esempio), il modo corretto è installare il nodejs-legacypacchetto:

apt-get install nodejs-legacy

e non creare un collegamento simbolico da solo (soprattutto non in /usr/bin/). Questo fornirà un nodecomando per nodejs.


2
Funziona. Penso che sia meglio della risposta di @ jlouzado.
Shawn Xie,

a meno che tu non abbia spesso "ricominciare da capo" con l' installazione del tuo SO .... MOLTO meglio per consentire a apt di gestire i collegamenti simbolici nel cestino. Grazie!
mike,

2

Prova questo

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

sudo apt-get install -y nodejs

:)


2
Perché non installi l'ultima versione ?:curl -sL https://deb.nodesource.com/setup_8.x | sudo -E bash -
karel,

setup_6.x è stabile
MUHASIN BABU

La politica LTS per Node.js versione 8 è che è in sospeso LTS ora, inizia a essere LTS tra qualche mese a ottobre 2017, inizia il periodo di manutenzione ad aprile 2019 e termina la manutenzione a dicembre 2019. Per ulteriori informazioni vedi la tabella in questa risposta: askubuntu.com/questions/626383/…
karel

1

potrebbe essere necessario installare manualmente

sudo apt-get install npm

1
Ho letto dappertutto che non avrei dovuto installare npm manualmente perché era incluso in> v0.10: / Sono un po 'perso
Matthieu Napoli

0

Una soluzione rapida per gli nvmutenti. Uso nvm(gestore versione nodo) e per utilizzare il npmcomando devo sempre emettere prima di npmquesto comando nvm use 0.x(sostituire 0.xcon 0.11o, 0.10ad esempio, la versione che si desidera utilizzare).


0

Come già menzionato da minerz029 , alcune versioni del nodejspacchetto non forniranno il file nodebinario a causa di un altro pacchetto che precedentemente utilizzava quel nome. La soluzione è semplice come seguire i passaggi installati sul sito Web di Node:

Installazione di Node.js tramite Gestione pacchetti | Distribuzioni Linux basate su Debian e Ubuntu

Al momento, questi passaggi sono:

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

Ma sarebbe meglio controllare il link di origine per assicurarsi di utilizzare l'ultima versione.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.