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?

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 ).


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

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

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




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

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

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 ..


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.


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.


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)


1
La respuesta de @ tom-hale es la forma de Ubuntu para esto. Utiliza alternativas para especificar el nodo correcto
kervin


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


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


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

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.