nodo: comando no encontrado


47

No entiendo por qué el nodecomando no funcionará, mientras que nodejsfunciona:

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

Lo intenté apt-get install nodejs, pero la última versión ya está instalada.

Y además:

$ npm
zsh: command not found: npm

Pensé que npmestaba incluido en NodeJS> 0.10?


que esta publicación resuelva su problema [Stackoverflow] [1] [1]: stackoverflow.com/questions/13593902/node-command-not-found
Ahmed Al-battashi

@ AhmedAl-battashi No ayuda, ya lo he leído. NodeJS está instalado, nodejsse encuentra en el camino, pero nodey npmno están disponibles, no puedo encontrar en cualquier lugar de mi sistema.
Matthieu Napoli

2
No estoy completamente seguro, pero sí recuerdo que la razón por la que nodese cambió el nombre del binario fue porque entraba en conflicto con uno de los paquetes llamados node(Programa de nodo de radio de paquetes de aficionados).
yjwong

¿Estás seguro de que estás buscando nodey no nodejs? nodeNo es lo que crees que es.
Braiam el

@Braiam nodese usa en todos los tutoriales que he visto
Matthieu Napoli

Respuestas:


44

El nodepaquete no está relacionado con NodeJS. Consulte aquí para obtener información sobre el nodoInstalar nodo :

Programa de nodo de radio de paquetes de aficionados (paquete de transición)


En su lugar, debe instalar el nodejs Instalar nodejspaquete.

sudo apt-get install nodejs

luego úsalo con el nodejscomando.

nodeEs probable que la razón no funcione debido a conflictos con el nodepaquete original vinculado anteriormente.


Si lo desea npm Instalar npm, también deberá instalarlo.

sudo apt-get install npm

3
Conocía el nodepaquete, sin embargo, no veo por qué un paquete de nombre tiene alguna influencia en la herramienta de línea de comandos. Por ejemplo, no instalo php, pero php5-cli. Pero gracias por la respuesta, no estaba seguro si la instalación manual npmsería un problema, aparentemente no lo es.
Matthieu Napoli

2
Instalar el nodejs-legacypaquete le permite usar nodeo nodejs.
grooveplex

48

Estoy de acuerdo, este es un problema, pero no sé por qué está sucediendo.

La solución

Lo primero es lo primero, solo crea un enlace simbólico desde el nodeseñalador llamado al nodejsbinario.

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

El problema

Algunas guías que encontré para instalar Nodejs ( aquí y aquí ) tienen un código similar para probar si la instalación se realizó correctamente. Así que esencialmente cree un servidor simple como este:

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

y luego ejecutarlo en nodejs con lo siguiente:

node hello_node.js

Y luego, cuando intentaba usar npm para instalar algo, estaba fallando e informaba el mismo node not foundmensaje.


Tengo el mismo problema, sudo apt-get install npm y luego, siguiendo la recomendación de @jlouzado, complete el trabajo. Ahora está funcionando bien
user615274

55
Sugerencia curiosa: hay un paquete nodejs-legacy que proporciona el enlace simbólico, supuestamente por compatibilidad con el "código heredado" que aún se basa en él.
Simón

1
@ Simón Creo que es una mejor solución que hacer un enlace simbólico.
grooveplex

Así que ahora estoy contando 3 paquetes que tengo que instalar si básicamente estoy haciendo algo con Node.js. He estado intentando instalar esta biblioteca Node.js durante aproximadamente una hora.
sudo

No pude instalar asciicast2gifporque durante la instalación se ejecuta node install.jsy aparece el error sh: 1: node: not found. Esto lo arregla.
Vinayak

26

Como @ minerz029 ya dijo que hay un conflicto con el nodepaquete. Pero si aún necesita el nodecomando (porque un script usa solo, nodepor ejemplo), la forma correcta es instalar el nodejs-legacypaquete:

apt-get install nodejs-legacy

y no crear un enlace simbólico por su cuenta (especialmente no en /usr/bin/). Esto proporcionará un nodecomando para nodejs.


2
Funciona. Creo que esto es mejor que la respuesta de @ jlouzado.
Shawn Xie

a menos que con frecuencia "comience desde cero" con la instalación de su sistema operativo ... MUCHO mejor para permitir que administren enlaces simbólicos en bin. ¡Gracias!
Mike

2

Prueba esto

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

sudo apt-get install -y nodejs

:)


2
¿Por qué no estás instalando la última versión ?:curl -sL https://deb.nodesource.com/setup_8.x | sudo -E bash -
karel

setup_6.x es estable
MUHASIN BABU

La política de LTS para Node.js versión 8 es que está pendiente de LTS ahora, comienza a ser LTS en unos meses en octubre de 2017, comienza el período de mantenimiento en abril de 2019 y finaliza el mantenimiento en diciembre de 2019. Para obtener más información vea la tabla en esta respuesta: askubuntu.com/questions/626383/…
karel

1

puede que necesites instalarlo manualmente

sudo apt-get install npm

1
Leí en todas partes que no debería instalar npm manualmente porque estaba incluido en> v0.10: / Estoy un poco perdido
Matthieu Napoli

0

Una solución rápida para los nvmusuarios. Yo uso nvm(administrador de versiones de nodo) y para que yo use el npmcomando siempre debo emitir antes de npmeste comando nvm use 0.x(reemplazar 0.xcon 0.11o 0.10por ejemplo, la versión que desea usar).


0

Como minerz029 ya ha mencionado , ciertas versiones del nodejspaquete no proporcionarán el nodebinario debido a otro paquete que anteriormente usaba ese nombre. La solución es tan simple como seguir los pasos de instalación en el propio sitio web de Node:

Instalación de Node.js a través del administrador de paquetes | Distribuciones Linux basadas en Debian y Ubuntu

Por el momento, esos pasos son:

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

Pero sería mejor verificar el enlace de origen para asegurarse de que está utilizando la última versión.

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.