Node forever / usr / bin / env: node: aucun fichier ou répertoire de ce type

108

J'ai installé nodejs en utilisant:

apt-get install nodejs

Ensuite, j'ai installé npm en utilisant:

apt-get install npm

Et puis j'ai installé pour toujours en utilisant:

npm install forever -g

Maintenant je vais à mon projet /var/www/myproject

et essayez de courir forever start server.js

alors je reçois le message suivant:

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

Quelqu'un peut-il me dire ce qui se passe?

Marc Rasmussen
la source
Double
marcanuy
1
J'obtiens ce bug et j'utilise Node Version Manager.
munchschair

Réponses:

270

EDIT: à partir de décembre 2018, ce n'est plus la bonne façon. Voir les deux autres réponses.

Vous devez créer un lien symbolique entre l'exécutable nodejs et node sudo ln -s "$(which nodejs)" /usr/local/bin/nodeLa raison en est que lorsque vous faites "apt-get install node", il installe un paquet non lié, ils ont donc dû choisir un nom différent pour qu'il ne soit pas en conflit

chedabob
la source
4
Qu'est-ce que $ (which nodejs) "est le code que vous collez quelque chose que je devrais simplement copier coller ou?
Marc Rasmussen
11
"$ (which nodejs)" obtient le chemin de l'exécutable nodejs. Lorsque vous mettez quelque chose à l'intérieur de "$ ()", il est exécuté puis inséré dans la commande contenant
chedabob
2
@chedabob J'ai rencontré le même problème mais je ne l'avais pas encore résolu lorsque j'exécute votre commande à ce moment-là, j'ai reçu le ln: échec de création du lien symbolique '/ usr / bin / node': Le fichier existe
DASADIYA CHAITANYA
@ dasadiya-chaitanya Dans ce cas, assurez-vous que le fichier existant pointe vers un exécutable de noeud correct en exécutant ce qui suit. ls -lart / usr / bin / node. Si le lien symbolique ne pointe pas vers le binaire correct, supprimez-le dans ce cas. Et relancez ce qui suit: sudo ln -s "$ (which nodejs)" / usr / bin / node
brownmamba
4
Sur Debian et Ubuntu, il existe un paquet nodejs-legacyfournissant le lien symbolique. Vous n'êtes pas censé le faire manuellement. apt-get install nodejs-legacyest la bonne façon de résoudre le problème, voir ma réponse ci-dessous.
Clément Schreiner
45

Bien que la réponse acceptée corrige le problème, la bonne façon de le faire, au moins avec Debian Jessie et forward et Ubuntu 14.4 et forward 1, est d'installer nodejs-legacy :

apt-get install nodejs-legacy

La raison en est que Debian avait déjà un emballage (noeud) fournissant / usr / bin / noeud , et le nodejs noeud had binaire pour être installé dans / usr / bin / nodejs.

Le package nodejs-legacy fournit un lien symbolique de / usr / bin / nodejs vers / usr / bin / node (et entre en conflit avec le package node ).

Source: [CTTE # 614907] Résolution du conflit node / nodejs et bogue Debian # 614907: node: name conflict with node.js interpreter

Clément Schreiner
la source
C'est la bonne manière sur Debian / Ubuntu +1, un excellent contexte pour ceux qui ne sont pas familiers avec le système d'exploitation.
Ligemer
18

C'est mieux si vous mettez à jour vers la dernière version du nœud

  1. sudo npm cache clean -f
  2. sudo npm installer -gn
  3. sudo n stable
Shantanu
la source