browserify error / usr / bin / env: node: No existe tal archivo o directorio

85

Instalé node js y npm a través de apt-get install y todas las dependencias, luego instalé browserify

npm install browserify -g

pasa por el proceso y parece que se instaló correctamente, pero cuando trato de hacer un paquete simple según este tutorial

Me sale el error:

/ usr / bin / env: node: No existe tal archivo o directorio

ingrese la descripción de la imagen aquí

Eduardo Dennis
fuente
hmm, debe verificar si el ejecutable del nodo está en / usr / bin o / usb / bin / env al menos este es un problema operativo específico. Es posible que pueda resolver esto instalando browserify local.
bodokaiser
mi ejecutable browserfy está en / usr / local / bin / pero ¿está llamando a otra cosa que es la ruta desordenada?
Eduardo Dennis
3
ah, tienes que vincular simbólicamente nodejs a node en ubuntu. Ubuntu instala node como nodejs, luego tienes que hacer algo como "ln -s / usr / bin / nodejs / usr / bin / node" para que los sistemas también lo encuentren como node
bodokaiser
1
eso lo resolvió: -PI me han estado rompiendo la cabeza por esto durante la última hora, ¿pueden poner en formato de respuesta para aceptar?
Eduardo Dennis
1
Me alegro de que haya funcionado, no estaba seguro de si realmente es este problema, por eso comenté primero :)
bodokaiser

Respuestas:

246

Algunas distribuciones de Linux instalan nodejs no como un ejecutable "node" sino como "nodejs".

En este caso, debe vincular manualmente al "nodo", ya que muchos paquetes están programados después del binario "nodo". Algo similar también ocurre con "python2" no vinculado a "python".

En este caso, puede hacer un enlace simbólico fácil. Para distribuciones de Linux que instalan paquetes binarios /usr/bin, puede hacer

ln -s /usr/bin/nodejs /usr/bin/node
bodokaiser
fuente
5
Esta no es la solución para Ubuntu 14.04 porque /usb/sbin/nodees ax24-node (no relacionado con nodejs). Solo el enlace simbólico a /usr/bin/nodeno funcionará porque /usr/sbin/nodees lo primero en$PATH
Gareth
8
la forma correcta de resolver esto es usar update-alternatives. vea mi respuesta aquí stackoverflow.com/a/24592328/454615
airtonix
1
en realidad, pensando más en esto ... enlazar binarios como este es un gran hábito a adoptar si está buscando romper su sistema.
airtonix
sí, he notado que lo rompe de manera sutil, ¿ha encontrado una solución mejor?
Eduardo Dennis
1
@EduardoDennis sí, usa update-alternatives. existe para estas situaciones exactas.
airtonix
52

Nueva respuesta:

  1. Desinstale cualquier paquete de nodejs que haya instalado a través del administrador de paquetes de su sistema (dnf, apt-get, etc.), elimine cualquier enlace simbólico tonto que haya estado recreando en cada actualización (lol).
  2. Instalar NVM,
  3. use nvm para instalar nodejs: nvm install 6

Respuesta anterior:

Cualquier conversación sobre la creación de enlaces simbólicos o la instalación de algún otro paquete de nodos es falsa y no sostenible.

La forma correcta de resolver esto es:

  1. simplemente instale el paquete nodejs con apt-get como ya lo hizo
  2. use update-alternativespara indicar que su binario nodejs es responsable de#!/usr/bin/env node

Al igual que :

sudo apt-get install nodejs
sudo update-alternatives --install /usr/bin/node nodejs /usr/bin/nodejs 100

Esto ahora se vuelve sostenible a través de las actualizaciones de paquetes, dist-upgrades, etc.

airtonix
fuente
Esta es una solución para mi problema stackoverflow.com/questions/26155795/…
Alon Carmel
Gracias, gran solución, el truco con los enlaces simbólicos es el que más se repite en la red, pero no me funcionó.
Emilia Tyl
La respuesta correcta real ahora es usar NVM en Linux y Nodist en Windows.
airtonix
35

Corre apt-get install nodejs-legacy.

Algunas distribuciones de Linux han cambiado el nombre binario de node.js, lo que lo hace incompatible con muchos paquetes de node.js. El paquete nodejs-legacyproporciona un enlace simbólico para resolver esto.

alex
fuente
2
Esta es la solución para Ubuntu 14.04 porque /usb/sbin/nodees ax24-node (no relacionado con nodejs). El enlace simbólico a /usr/bin/nodeno funcionará porque /usr/sbin/nodees lo primero en$PATH
Gareth
Me ayudó. ¡Gracias!
Lapidus
apt-get install nodejs-legacy. dice que para el usuario de Windows 'apt-get' no se reconoce como un comando interno o externo, programa operable o archivo por lotes.
Swift
7

También puede instalar Nodejs usando NVM o Nodejs Version Manager . Hay muchos beneficios al usar un administrador de versiones. Uno de ellos es que no tiene que preocuparse por este problema.


Instrucciones:


sudo apt-get update
sudo apt-get install build-essential libssl-dev

Una vez instalados los paquetes de requisitos previos, puede desplegar el script de instalación de nvm desde la página de GitHub del proyecto. El número de versión puede ser diferente, pero en general, puede descargarlo e instalarlo con la siguiente sintaxis:

curl https://raw.githubusercontent.com/creationix/nvm/v0.16.1/install.sh | sh

Esto descargará el script y lo ejecutará. Instalará el software en un subdirectorio de su directorio personal en ~/.nvm. También agregará las líneas necesarias a su ~/.profilearchivo para usar el archivo.

Para obtener acceso a la funcionalidad nvm, deberá cerrar la sesión y volver a iniciarla, o puede obtener el archivo ~ / .profile para que su sesión actual conozca los cambios:

source ~/.profile

Ahora que tiene nvm instalado, puede instalar versiones aisladas de Node.js.

Para averiguar las versiones de Node.js que están disponibles para la instalación, puede escribir:

nvm ls-remote
. . .

v0.11.10
v0.11.11
v0.11.12
v0.11.13
v0.11.14

Como puede ver, la versión más reciente en el momento de escribir este artículo es la v0.11.14. Puede instalarlo escribiendo:

nvm install 0.11.14

Normalmente, nvm cambiará para usar la versión instalada más recientemente. Puede decirle explícitamente a nvm que use la versión que acabamos de descargar escribiendo:

nvm use 0.11.14

Cuando instala Node.js usando nvm, el ejecutable se llama nodo. Puede ver la versión que está utilizando actualmente el shell escribiendo:

node -v

El tutorial completo se puede encontrar aquí.

Eduardo Dennis
fuente
sí, más uno para los administradores de versiones del entorno. definitivamente una respuesta mucho mejor que la mía a pesar de que la nuestra es la forma correcta de hacer esto. Diré que nvm está más dirigido a estaciones de trabajo interactivas que a servidores de producción (pero no veo por qué uno no podría usarlo allí) ... personalmente, estoy más inclinado a usar imágenes de Docker en producción.
airtonix
0

Parezco el mismo problema cuando construyo atom en Linux.

sudo apt-get install nodejs-dev

Arregla mi pregunta. Espero que te sea útil.

Kangear
fuente
0

Si no desea realizar un enlace simbólico, puede hacerlo. funciona en ubuntu

#!/usr/local/bin/node --harmony

La etiqueta de armonía es para la nueva armonía ECMAscript.

usuario2290820
fuente
0
  1. ejecutar el comando which nodeel resultado será algo

    /home/moh/.nvm/versions/node/v8.9.4/bin/node

  2. Copie la ruta que tiene arriba y luego ejecute el comando en el paso 3.

  3. ln -s /home/moh/.nvm/versions/node/v8.9.4/bin/node /usr/bin/node

Moh .S
fuente
-1

Tienes que llamar a "nodejs" y no a "node". Para verificar esto, escriba node -ven el shell: si no encuentra nada, intente nodejs -v. Si eso muestra un número de versión, entonces el comando que debería usar es nodejsy no node. Por lo tanto, debe cambiar la llamada a browserify en su script de nodea nodejs(como se muestra a continuación): reemplazar

#!/usr/bin/env node

con

#!/usr/bin/env nodejs

También es posible que deba abrir el script como superusuario.

usuario51324
fuente