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

108

He instalado nodejs usando:

apt-get install nodejs

Luego instalé npm usando:

apt-get install npm

Y luego lo he instalado para siempre usando:

npm install forever -g

Ahora voy a mi proyecto /var/www/myproject

e intento correr forever start server.js

entonces recibo el siguiente mensaje:

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

¿Alguien puede decirme qué está pasando?

Marc Rasmussen
fuente
1
Recibo este error y estoy usando Node Version Manager.
munchschair

Respuestas:

270

EDITAR: A partir de diciembre de 2018, esta ya no es la forma correcta. Vea las otras dos respuestas.

Necesita vincular simbólicamente el ejecutable de nodejs al nodo. sudo ln -s "$(which nodejs)" /usr/local/bin/nodeLa razón de esto es que cuando hace "apt-get install node", instala un paquete no relacionado, por lo que tuvieron que elegir un nombre diferente para que no entrara en conflicto.

chedabob
fuente
4
¿qué es $ (qué nodejs) "es el código que pegas algo que debería copiar y pegar?
Marc Rasmussen
11
"$ (which nodejs)" obtiene la ruta del ejecutable de nodejs. Cuando pones algo dentro de "$ ()", se ejecuta y luego se inserta en el comando que lo contiene
chedabob
2
@chedabob Me enfrenté al mismo problema, pero aún no lo había resuelto cuando estaba ejecutando su comando en ese momento obtuve el ln: no se pudo crear el enlace simbólico '/ usr / bin / node': el archivo existe
DASADIYA CHAITANYA
@ dasadiya-chaitanya En ese caso, asegúrese de que el archivo existente apunte a un ejecutable de nodo correcto ejecutando lo siguiente. ls -lart / usr / bin / node. Si el enlace simbólico no apunta al binario correcto, en ese caso elimínelo. Y vuelva a ejecutar lo siguiente: sudo ln -s "$ (which nodejs)" / usr / bin / node
brownmamba
4
En Debian y Ubuntu, hay un paquete que nodejs-legacyproporciona el enlace simbólico. Se supone que no debes hacerlo manualmente. apt-get install nodejs-legacyes la forma correcta de solucionar el problema, vea mi respuesta a continuación.
Clément Schreiner
45

Si bien la respuesta aceptada soluciona el problema, la forma correcta de hacerlo, al menos con Debian Jessie y adelante y Ubuntu 14.4 y adelante 1 es instalar nodejs-legacy :

apt-get install nodejs-legacy

La razón es que Debian ya tenía un paquete (nodo) que proporciona / usr / bin / node , y el binario del nodo nodejs tenía que instalarse en / usr / bin / nodejs.

El paquete nodejs-legacy proporciona un enlace simbólico de / usr / bin / nodejs a / usr / bin / node (y entra en conflicto con el paquete de node ).

Fuente: [CTTE # 614907] Resolución del conflicto de node / nodejs y error de Debian # 614907: nodo: conflictos de nombre con el intérprete de node.js

Clément Schreiner
fuente
Esta es la forma correcta en Debian / Ubuntu +1, un gran contexto para aquellos que no están familiarizados con el sistema operativo.
Ligemer
18

Es mejor si actualiza a la última versión del nodo

  1. sudo npm cache clean -f
  2. sudo npm install -gn
  3. sudo n estable
Shantanu
fuente