Node forever / usr / bin / env: node: Não existe tal arquivo ou diretório

108

Eu instalei o nodejs usando:

apt-get install nodejs

Então instalei o npm usando:

apt-get install npm

E então instalei para sempre usando:

npm install forever -g

Agora eu vou para o meu projeto /var/www/myproject

e tentar correr forever start server.js

então recebo a seguinte mensagem:

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

Alguém pode me dizer o que está acontecendo?

Marc Rasmussen
fonte
1
Eu recebo esse bug e estou usando o Node Version Manager.
munchschair

Respostas:

270

EDITAR: a partir de dezembro de 2018, este não é mais o caminho correto. Veja as outras duas respostas.

Você precisa vincular simbolicamente o executável do nodejs ao node sudo ln -s "$(which nodejs)" /usr/local/bin/nodeA razão para isto é que quando você faz "apt-get install node", ele instala um pacote não relacionado, então eles tiveram que escolher um nome diferente para não entrar em conflito

chedabob
fonte
4
what is $ (which nodejs) "é o código que você cola algo que eu deveria apenas copiar e colar ou?
Marc Rasmussen
11
"$ (which nodejs)" obtém o caminho do executável nodejs. Quando você coloca algo dentro de "$ ()", ele é executado e, em seguida, inserido no comando que o contém
chedabob
2
@chedabob Eu enfrentei o mesmo problema, mas ainda não tinha resolvido quando estava executando o seu comando naquele momento, recebi o ln: falhou ao criar o link simbólico '/ usr / bin / node': Arquivo existe
DASADIYA CHAITANYA
@ dasadiya-chaitanya Nesse caso, certifique-se de que o arquivo existente está apontando para um nó executável correto executando o seguinte. ls -lart / usr / bin / node. Se o link simbólico não estiver apontando para o binário correto, nesse caso exclua-o. E execute novamente o seguinte: sudo ln -s "$ (which nodejs)" / usr / bin / node
brownmamba
4
No Debian e no Ubuntu, existe um pacote que nodejs-legacyfornece o link simbólico. Você não deve fazer isso manualmente. apt-get install nodejs-legacyé a maneira correta de resolver o problema, veja minha resposta abaixo.
Clément Schreiner
45

Embora a resposta aceita resolva o problema, a maneira correta de fazer isso, pelo menos com o Debian Jessie e posterior e Ubuntu 14.4 e posterior 1 é instalar o nodejs-legacy :

apt-get install nodejs-legacy

A razão é que o Debian já tinha um pacote (nó) fornecendo / usr / bin / node , e o binário do nodejs tinha que ser instalado em / usr / bin / nodejs.

O pacote nodejs-legacy fornece um link simbólico de / usr / bin / nodejs para / usr / bin / node (e entra em conflito com o pacote de ).

Fonte: [CTTE # 614907] Resolução de conflito de nó / nodejs e bug Debian # 614907: nó: conflito de nome com interpretador node.js

Clément Schreiner
fonte
Esta é a maneira correta no Debian / Ubuntu +1, ótimo contexto para quem não está familiarizado com o sistema operacional.
Ligemer
18

É melhor se você atualizar para a versão de nó mais recente

  1. sudo npm cache clean -f
  2. sudo npm install -gn
  3. sudo n estável
Shantanu
fonte