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.