web-dev-qa-db-fra.com

Express.js: Aucun fichier ou répertoire de ce type

J'ai installé le noeud avec apt-get install nodejs. Ensuite, j'ai installé npm avec apt-get install npm. Maintenant, quand j'essaie de courir express je reçois

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

Comment puis-je résoudre cette erreur?

50
Evan Carroll

Ubuntu contient deux paquets portant des noms similaires, node et nodejs.

node fait cela, 

Description-fr: Programme de nœud radio amateur. Le programme de nœud accepte les connexions réseau TCP/IP et radio par paquets et présente aux utilisateurs une interface leur permettant d'établir des connexions de passerelle vers des hôtes distants à l'aide de divers protocoles de radio amateur.

nodejs fait cela,

Description-fr: Le moteur javascript côté serveur basé sur des événements de Node.js Node.js est similaire en conception et influencé par des systèmes tels que Ruby's Event Machine ou Python's Twisted. Cela va un peu plus loin dans le modèle d’événement: il présente la boucle comme une construction de langage plutôt que comme une bibliothèque. Node.js est fourni avec plusieurs bibliothèques utiles pour gérer les tâches du serveur: système, événements, E/S standard, modules, temporisations, processus enfants, POSIX, HTTP, analyse multipart, TCP, DNS, Assert, chemin, URL, chaînes de requête.

Fedora suit également un schéma de nommage de paquet similaire. Pour cette raison, le binaire dans nodejs a dû être renommé en nodejs à partir de l'original node. Cependant, ce n’est pas techniquement casher: et la plupart des programmes nodejs (et des bibliothèques installées avec npm) supposent que le binaire du nœud est node. Si vous voulez contourner cela, le moyen le plus simple est simplement de faire un lien symbolique entre les deux. Si vous prenez cette route, n’installez pas le paquet node qui gère le matériel Amateur Packet Radio.

Sudo ln -s /usr/bin/nodejs /usr/local/bin/node

Sinon, dans le cas du noeud, je suggérerais d'utiliser n et de ne pas installer node. Installez simplement npm (qui installera le nœud), puis supprimez npm, puis dites à apt de le nettoyer. Pour cela, lancez simplement

Sudo apt-get install npm
Sudo npm install -g n
Sudo n latest
Sudo apt-get --purge remove npm
Sudo apt-get autoremove

Il existe d'autres gestionnaires de distribution binaire qui fonctionnent même à partir d'un script Shell tel que nvm mais personnellement, je préfère n. Pensez à n comme à un apt pour une seule chose: le noeud binaire sur lequel il installe /usr/local/bin.

Pourquoi supprimer npm? N'étaient pas. apt-get --purge remove peut seulement jamais supprimer les éléments installés par le gestionnaire de paquets. n latest fonctionne en dehors du gestionnaire de paquets. Il y a deux NPM si vous faites cela,

  1. version installée par la distribution (Debian/Ubuntu) en utilisant apt-get.
  2. version installée par n latest.

Inutile d'avoir l'ancienne version de la distribution. Et, pire encore, si cette version fonctionne, elle peut éventuellement s’installer à un autre emplacement et contenir des modifications Debian qui supposent des répertoires d’installation Debian. Il vaut mieux utiliser l'un ou l'autre, mais pas les deux.

106
Evan Carroll

vous devriez installer le paquet nodejs-legacy qui a un lien de/usr/bin/node à/usr/bin/nodejs

$ Sudo apt-get install nodejs-legacy

21
Sergey Fedoseev

Dans mon cas, c’était parce que dans ma variable d’environnement PATH, j’avais "~/progs/node/bin /" et que le "~" ne semble pas avoir été résolu en remplaçant par env... home/myuser/node/bin ") a résolu mon problème.

4
Anthony O.

Cette solution 

export PATH="$HOME/opt/nodejs/bin:$PATH"

résolu ce problème pour moi (cela devrait fonctionner en supposant que la variable $ HOME soit définie correctement). Cela me permet également d'éviter de coder en dur le chemin d'accès à mon répertoire personnel (par exemple, pour pouvoir réutiliser mon profil .bash_profile avec différents comptes/serveurs si nécessaire).

2
SnapShot

faire ceci en cmd

Sudo apt-get install nodejs-legacy
chmod your folder 700 (optional)
0
Bilal Naqvi