No se puede instalar NodeJs: / usr / bin / env: node: No existe dicho archivo o directorio

302

Estoy tratando de instalar nodeJs en mi Ubuntu 14.04 para usar GruntJs.

He leído sobre Ubuntu de una manera diferente de hacerlo ( ¿problemas? ), Así que esto es lo que hice para instalarlo:

sudo apt-get install npm

sudo npm install -g grunt-cli

Escribiendo gruñido después de eso, tengo el error:

/usr/bin/env: node: No such file or directory

Entonces, he intentado:

curl -sL https://deb.nodesource.com/setup | sudo bash -

sudo apt-get install -y nodejs

sudo apt-get update

E intentándolo de nuevo y aún obteniendo el error, he intentado:

sudo add-apt-repository https://launchpad.net/~chris-lea/+archive/node.js/

sudo apt-get install -y nodejs

Tengo este mensaje:

nodejs is already the newest version.
0 to upgrade, 0 to newly install, 0 to remove and 3 not to upgrade.

Intenté una limpieza por si acaso:

sudo apt-get autoremove

Pero no, el error sigue ahí: cuando escribo gruñido sigo teniendo /usr/bin/env: node: No such file or directory

¿Qué tengo que hacer?

Rosamunda
fuente

Respuestas:

794

Hacer un enlace simbólico resuelve el problema:

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

(Mi agradecimiento y +1 voto a la respuesta de bodokaiser ).

Rosamunda
fuente
97
sudo apt-get install nodejs-legacytambién crea este enlace, consulte la descripción en packages.debian.org/sid/nodejs-legacy
anatoly techtonik
1
El enlace simbólico resolvió el problema y ahorró mucho tiempo de desarrollo. ¡Gracias!
Farzad YZ
Esta solución es realmente un salvavidas. Especialmente, si está siguiendo la guía de permisos de reparación
Josh Frankel
¡Gracias! Esto me salvó la tarde, tratando de configurar una aplicación de nodo en Google Cloud Linux.
jovan
1
Debe usar which nodepara obtener la ruta correcta a su nodo. Entonces el comando seríaln -s "$(which node)" /usr/bin/node
technogeek1995
117

El problema no es con la versión del nodo. En cambio, es la forma en que NodeJS se instala por defecto en Ubuntu. Al ejecutar una aplicación Node en Ubuntu, debe ejecutar en nodejs somethign.jslugar denode something.js

Entonces, el nombre de la aplicación llamada en la terminal es nodejsy no node. Esto es por qué hay una necesidad de un enlace simbólico simplemente reenviar todas las órdenes recibidas como nodea nodejs.

ln -s /usr/bin/nodejs /usr/bin/node
Muhammad bin Yusrat
fuente
66
Necesitará ejecutar este comando con sudo, si obtiene el error "ln: no se pudo crear el enlace simbólico '/ usr / bin / node'"
Suraj Dubey
ln -s / usr / bin / nodejs / usr / bin / node
rd_
54

Creo que deberías actualizar la última versión del nodo

sudo npm cache clean -f
sudo npm install -g n
sudo n stable
vanlan228
fuente
1
Solo un consejo; sangra tus líneas de código por 4 espacios;) tampoco nes un comando asociado con Node.JS.
Qix - MONICA FUE MAL
@David basado en la descripción del paquete en NPM : "Administre interactivamente todas sus versiones de nodo"
frdmn
Resolvió el problema para mí
criterz
Copié un laravelproyecto de la windowsmáquina ubuntu 16.04y laravel mixtuve problemas con npm run watchY esta solución funcionó para mí y ahora el problema desapareció
AN
29

si puede acceder al nodo en la terminal de ubuntu usando el comando nodejs, entonces este problema puede resolverse simplemente usando -creando un enlace simbólico de nodejs y el nodo usando

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

y esto puede resolver el problema

Hiro
fuente
10

Solo haz

$ sudo apt-get install nodejs-legacy

Y comenzará a funcionar.

Prabhu Nandan Kumar
fuente
9

He encontrado que esto es a menudo un error erróneo, si instala desde un administrador de paquetes, puede que se llame nodejs, por lo que solo necesita vincularlo así

ln -s /usr/bin/nodejs /usr/bin/node
Ahmad Awais
fuente
1
En lugar de agregar un comentario negativo, avíseme aquí en el comentario qué está mal, para que pueda ayudarlo con eso. Dado que no hay nada de malo en crear un enlace simbólico, especialmente si te ayuda a administrar mejor las cosas.
Ahmad Awais
1
Yo mismo prefiero este enfoque. Está limpio.
Muhammad Gelbana
8

Si ya tiene instalado nodejs (consulte con which nodejs) y no desea instalar otro paquete, puede, como root:

update-alternatives --install /usr/bin/node node /usr/bin/nodejs 99
Tom Hale
fuente
Esta es la forma correcta de Debian.
Tonin
6

Cuando estaba usando gulp recibí este error.

~$ gulp

/ usr / bin / env: 'nodo': no ​​existe tal archivo o directorio

Esto se eliminó ejecutando el siguiente comando, debe tener en cuenta que el directorio / usr / bin tiene todos los permisos.

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

esto funciona para mi ..

Naveen Gupta
fuente
5

Dependiendo de cómo instaló su nodo, la mayoría de las veces podría no estar en / usr / bin /, en mi caso fue cuando utilicé nvm para instalar, por lo que mi nodo estaba en ./nvm/versions.

Usando este comando which nodedescubrí la ruta, pero para facilitar el trabajo puede ejecutar este comando.

nodepath=$(which node); sudo ln -s $nodepath /usr/bin/node

el comando anterior obtendrá la ubicación de su nodo y creará un enlace para usted.

akisoft
fuente
5

Hay dos soluciones para esto:

a) Establezca su variable PATH para incluir "/ usr / local / bin"

export PATH="$PATH:/usr/local/bin"

b) Cree un enlace simbólico a "/ usr / bin" que ya está en su RUTA

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

Espero que ayude.

Pavel
fuente
4

Si bien ln -ses la solución más fácil y obvia, una explicación:

Debido a un conflicto con otro paquete, el ejecutable de los repositorios de Ubuntu se llama nodejs en lugar de node. Tenga esto en cuenta mientras ejecuta el software.

Este consejo aparece cuando se instala sudo apt-get install nodejs.

Entonces, alguna otra herramienta conocida (no sé lo que hace. Si bien los repositorios de ubuntu la conocen, no está instalada por defecto en 16.04) ocupa ese espacio de nombres.

Hubiera sido agradable, si Ubuntu hubiera ofrecido un consejo sobre cómo solucionar esto 'limpiamente', si no hubiera hecho a mano lo que de otro modo haría el paquete. (una colisión sigue siendo una colisión ... si + cuando ocurriría)

Frank Nocke
fuente
1
La respuesta de @ tom-hale es la forma de Ubuntu para esto. Utiliza alternativas para especificar el nodo correcto
kervin
2
sudo PATH="$PATH:/usr/local/bin" npm install -g <package-name>
KARTHIKEYAN.A
fuente
2

Para mi enlace caso tuvo NO funcionará de la siguiente manera

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

Pero puede abrir / usr / local / bin / lessc como root y cambiar la primera línea de nodo a nodejs.

- #! / usr / bin / env nodo

+ #! / usr / bin / env nodejs

Tanvir Ahmad
fuente
2

Siga estos comandos para solucionar el problema.

En una terminal:

  1. Limpie todo el caché NPM:

    $ sudo npm cache clean -f
  2. sudo npm install -g n
  3. Instale la última versión estable de Node.js:

    sudo n stable

Ahora se instaló la última versión de Node.js. Verifique la versión usando:

node -v
Anandhu Raj
fuente
0

Simplemente cambie el nombre del comando o nombre de archivo ln -s /usr/bin/nodejs /usr/bin/nodepor este comando

Shalauddin Ahamad Shuza
fuente
0

Para mí, la respuesta aceptada aún no funcionaba. Comencé como se sugiere aquí:

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

Después de hacer esto recibí el siguiente error:

/usr/local/lib/node_modules/npm/bin/npm-cli.js:85 let notifier = require ('update-notifier') ({pkg}) ^^^

SyntaxError: las declaraciones de ámbito de bloque (let, const, function, class) aún no se admiten fuera del modo estricto en exports.runInThisContext (vm.js: 53: 16) en Module._compile (module.js: 374: 25) en Object. Module._extensions..js (module.js: 417: 10) en Module.load (module.js: 344: 32) en Function.Module._load (module.js: 301: 12) en Function.Module.runMain ( module.js: 442: 10) al inicio (node.js: 136: 18) en node.js: 966: 3

La solución fue descargar la versión más reciente del nodo desde https://nodejs.org/en/download/ .

Entonces hice:

sudo tar -xf node-v10.15.0-linux-x64.tar.xz --directory /usr/local --strip-components 1

Ahora la actualización finalmente tuvo éxito: npm -vcambió de 3.2.1 a 6.4.1

Blackbam
fuente