Node forever / usr / bin / env: node: nessun file o directory di questo tipo


108

Ho installato nodejs usando:

apt-get install nodejs

Quindi ho installato npm usando:

apt-get install npm

E poi l'ho installato per sempre usando:

npm install forever -g

Ora vado al mio progetto /var/www/myproject

e tentare di correre forever start server.js

quindi ricevo il seguente messaggio:

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

Qualcuno può dirmi cosa sta succedendo?



1
Ottengo questo bug e sto usando Node Version Manager.
munchschair

Risposte:


270

EDIT: a partire da dicembre 2018, questo non è più il modo corretto. Vedi le altre due risposte.

Devi creare un collegamento simbolico all'eseguibile nodejs a node sudo ln -s "$(which nodejs)" /usr/local/bin/nodeLa ragione di ciòèche quando fai "apt-get install node", installa un pacchetto non correlato, quindi hanno dovuto scegliere un nome diverso in modo che non entrasse in conflitto


4
cos'è $ (which nodejs) "è il codice che incolli qualcosa che dovrei semplicemente copiare incollare o?
Marc Rasmussen

11
"$ (which nodejs)" ottiene il percorso dell'eseguibile nodejs. Quando metti qualcosa all'interno di "$ ()", viene eseguito e quindi inserito nel comando
contenitore

2
@chedabob Ho affrontato lo stesso problema ma non l'avevo ancora risolto quando eseguo il tuo comando in quel momento ho ricevuto ln:
impossibile

@ dasadiya-chaitanya In questo caso assicurati che il file esistente punti a un nodo eseguibile corretto eseguendo quanto segue. ls -lart / usr / bin / node. Se il collegamento simbolico non punta al binario corretto, in tal caso cancellalo. Ed esegui di nuovo quanto segue: sudo ln -s "$ (which nodejs)" / usr / bin / node
brownmamba

4
Su Debian e Ubuntu, c'è un pacchetto che nodejs-legacyfornisce il collegamento simbolico. Non dovresti farlo manualmente. apt-get install nodejs-legacyè il modo corretto per risolvere il problema, vedere la mia risposta di seguito.
Clément Schreiner

45

Sebbene la risposta accettata risolva il problema, il modo corretto per farlo, almeno con Debian Jessie e forward e Ubuntu 14.4 e forward 1, è installare nodejs-legacy :

apt-get install nodejs-legacy

Il motivo è che Debian aveva già un pacchetto (nodo) che forniva / usr / bin / node e il binario del nodo nodejs doveva essere installato in / usr / bin / nodejs.

Il pacchetto nodejs-legacy fornisce un collegamento simbolico da / usr / bin / nodejs a / usr / bin / node (e è in conflitto con il pacchetto node ).

Fonte: [CTTE # 614907] Risoluzione del conflitto nodo / nodejs e bug Debian # 614907: nodo: conflitto di nome con l'interprete node.js


Questo è il modo corretto su Debian / Ubuntu +1, ottimo contesto per chi non ha familiarità con il sistema operativo.
Ligemer

18

È meglio se esegui l'aggiornamento all'ultima versione del nodo

  1. sudo npm cache clean -f
  2. sudo npm install -gn
  3. sudo n stabile
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.