Erreur «Aucun fichier ou répertoire» lors de l'utilisation de npm

34

J'ai installé node et npm en suivant les instructions fournies ici

J'ai pu utiliser le noeud avec succès. Cependant, lorsque j'essaie d'installer le module de noeud "Formidable", j'obtiens le message d'erreur suivant:

$npm install formidable
bash: /usr/local/bin/npm: /usr/local/bin/node: bad interpreter: No such file or directory

Quand je fais un which npmje reçois la sortie suivante:

$which npm
/usr/local/bin/npm

Je n'ai aucune idée de ce qui ne va pas avec NPM ici - aucune idée sur la façon dont je peux résoudre ce problème?

utilisateur109187
la source
Bienvenue sur Ask Ubuntu! Je vois que vous avez installé Node dans /usr/local/bin/. Les packages tels que vous les avez utilisés dans les instructions que vous avez liées ne le font pas. Je pense que vous avez également installé un autre nœud à partir de la source. S'il vous plaît raconter toute l'histoire.
gertvdijk
@gertvdijk Eh bien, le noeud 0.8.14 était initialement installé. Je voulais mettre à jour ceci à 0.8.18. J'ai ensuite couru $sudo apt-get remove --purge nodejs npmmais cela n'a pas fonctionné. node --versionaprès l'installation 0.8.18 encore montré 0.8.14. Donc, ce que j’ai fait, c’est de suivre un message que je ne trouve pas encore - il est en principe commandé de le faire, which nodesuivi de rm -r /usr/local/bin/...- essentiellement des fichiers liés aux nœuds situés dans ce répertoire. Maintenant, après cela, j'ai réinstallé le nœud et c'était la version mise à jour. Cela fonctionne bien, mais npm ne l’est pas.
user109187
Oui, c'est ce qui se passe lorsque vous installez à partir des sources. Cela gênera votre gestion des paquets et vous en tant qu'utilisateur. S'il vous plaît, installez uniquement les logiciels sous forme de packages, à moins que vous ne sachiez ce que vous faites. Utilisez les instructions de désinstallation avec les scripts que vous avez utilisés pour installer cette version antérieure afin de la désinstaller correctement. Et modifiez votre question pour fournir des informations supplémentaires. C’est un site de questions-réponses, pas un forum de discussion, vous voyez? :)
Gertvdijk
@ gertvdijk J'ai trouvé le message qui demandait de supprimer manuellement les fichiers - stackoverflow.com/a/5917184/1907800 . Le chemin ici est / usr / bin / node
user109187

Réponses:

51

Prenant @gertvdijk, nous avons désinstallé NPM en utilisant le script suivant:

rm -rf /usr/local/{lib/node{,/.npm,_modules},bin,share/man}/npm*

(qui peut être trouvé ici )

Même après avoir effectué ce qui précède, j'ai eu une autre erreur:

$ npm install formidable  
bash: /usr/local/bin/npm: No such file or directory

Donc, j'ai couru hash -rdans le terminal (selon les instructions de NPM ne fonctionnera pas après la mise à niveau ) et le tour est joué - cela a fonctionné. NPM fonctionne maintenant!

utilisateur109187
la source
1
la seule chose utile ici était de découvrir hash, ce qui peut être simplement utilisé pour pointer vers un autre nœud / npm (si je souhaite utiliser plusieurs versions de nœud?)
user309383
Belle utilisateur invité.
LM_Fielding
4
hash -r m'a sauvé
diogo.abdalla
qu'est-ce que hashfait!?
Chanjung Kim
11

Ubuntu et certaines distributions Linux installent l’interprète de noeud tel quel /usr/bin/nodejs, et non /usr/local/bin/node.

Vous pouvez résoudre ce problème en installant le nodejs-legacypaquet qui crée un lien symbolique de /usr/bin/nodejsà /usr/bin/node.

Solution:

sudo apt-get install nodejs-legacy

Références: package nodejs-legacy

Pac
la source
1
Il semble nodejs-legacyne plus exister.
Martín De la Fuente
2

Il semble que vous ayez déjà installé une autre version du nœud à partir de la source. Ceci est indiqué par le /usr/local/binchemin où il semble être installé maintenant.

  1. Désinstallez celui que vous avez installé à partir des sources. Consultez les instructions fournies avec la source pour savoir comment procéder. Il n’existe pas de moyen unique de désinstaller les scripts logiciels installés qui ne fonctionnent pas avec la gestion des paquets de votre système.
  2. Installez les packages avec sont répertoriés dans les instructions que vous avez liées dans votre question.
  3. Vérifiez que which npmmaintenant répertorie /usr/bincomme chemin d'installation.

En général, vous ne devriez jamais avoir à installer de paquet depuis le source. Et si vous le faites, soyez conscient des conséquences, car vous surchargez ici la gestion des paquets et vous allez vous y perdre.

Gertvdijk
la source