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?
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,
apt-get
.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.
vous devriez installer le paquet nodejs-legacy qui a un lien de/usr/bin/node à/usr/bin/nodejs
$ Sudo apt-get install nodejs-legacy
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.
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).
faire ceci en cmd
Sudo apt-get install nodejs-legacy
chmod your folder 700 (optional)