Errore "Nessun file o directory" durante l'utilizzo di npm


34

Ho installato node e npm usando le istruzioni fornite qui

Sono stato in grado di utilizzare il nodo con successo. Tuttavia, mentre provo a installare il modulo nodo "Formidabile", ottengo il seguente errore:

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

Quando faccio un which npmottengo il seguente output:

$which npm
/usr/local/bin/npm

Non ho idea di cosa ci sia di sbagliato in npm qui - qualche idea su come posso risolvere questo problema?


Benvenuto in Ask Ubuntu! Vedo che hai installato Node in /usr/local/bin/. I pacchetti che hai usato nelle istruzioni a cui ti sei collegato non lo fanno. Penso che tu abbia installato anche un altro Nodo dalla fonte. Per favore, racconta tutta la storia.
gertvdijk,

@gertvdijk Bene, inizialmente era installato il nodo 0.8.14. Volevo aggiornare questo a 0.8.18. Ho quindi corso $sudo apt-get remove --purge nodejs npmma questo non ha funzionato. node --versiondopo l'installazione 0.8.18 mostrava ancora 0.8.14. Quindi, quello che ho fatto è stato seguire un post che non riesco a trovare ora - sostanzialmente mi ha chiesto di farlo which nodeseguito da rm -r /usr/local/bin/...- sostanzialmente alcuni file relativi al nodo in quella directory. Ora, dopo questo, ho reinstallato il nodo ed era la versione aggiornata. Funziona bene, ma npm no.
user109187

Sì, questo è ciò che accade quando si installa dal sorgente. Confonderà la gestione del pacchetto e l'utente come utente. Installa il software solo come pacchetti se non sai cosa stai facendo. Utilizzare le istruzioni di disinstallazione con gli script utilizzati per installare questa versione precedente per disinstallarla correttamente. E si prega di modificare la domanda per fornire ulteriori informazioni. Questo è un sito di domande e risposte, non un forum di discussione, vedi? :)
gertvdijk,

@gertvdijk Ho trovato il post che indicava di rimuovere manualmente i file - stackoverflow.com/a/5917184/1907800 . Il percorso qui è / usr / bin / node
user109187

Risposte:


51

Prendendo spunto da @gertvdijk, ho disinstallato NPM usando lo script:

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

(che puoi trovare qui )

Anche dopo aver eseguito quanto sopra, ho avuto un altro errore:

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

Quindi, ho funzionato hash -rnel terminale (secondo le istruzioni trovate in NPM Won't Run After Upgrade ) e voilà - ha funzionato. NPM ora funziona!


1
l'unica cosa utile qui era scoprire hash, che può essere semplicemente usato per indicare un altro nodo / npm (cosa succede se desidero lavorare con più di una versione di nodo?)
user309383

Bellissimo utente ospite.
LM_Fielding

4
hash -r mi ha salvato
diogo.abdalla il

cosa hashfa !?
Chanjung Kim

11

Ubuntu e alcune distribuzioni Linux installano l'interprete del nodo come /usr/bin/nodejse non /usr/local/bin/node.

È possibile risolvere questo problema installando il nodejs-legacypacchetto che crea un collegamento simbolico da /usr/bin/nodejsa /usr/bin/node.

Soluzione:

sudo apt-get install nodejs-legacy

Riferimenti: pacchetto nodejs-legacy


1
Sembra che nodejs-legacynon esista più.
Martín De la Fuente,

2

Sembra che tu abbia installato un'altra versione di Node dalla fonte qualche tempo prima. Ciò è indicato dal /usr/local/binpercorso in cui sembra essere installato ora.

  1. Disinstallare quello installato dal sorgente. Vedi le istruzioni fornite con la fonte su come farlo. Non esiste un modo unico per disinstallare gli script software installati che non funzionano con la gestione dei pacchetti del sistema.
  2. Installare i pacchetti con sono elencati nelle istruzioni a cui si è collegati nella domanda.
  3. Verifica che which npmora sia elencato /usr/bincome percorso di installazione.

In generale non dovresti mai installare i pacchetti dal sorgente. E se lo fai, si prega di essere consapevoli delle conseguenze mentre si sovrascrive la gestione dei pacchetti qui e ne verrà confuso.

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.