errore browserify / usr / bin / env: node: nessun file o directory di questo tipo


85

Ho installato il nodo js e npm tramite apt-get install e tutte le dipendenze, quindi ho installato browserify

npm install browserify -g

passa attraverso il processo e sembra che sia installato correttamente, ma quando provo a fare un semplice bundle per questa procedura dettagliata

Ottengo l'errore:

/ usr / bin / env: node: nessun file o directory di questo tipo

inserisci qui la descrizione dell'immagine


hmm dovresti controllare se l'eseguibile del nodo è in / usr / bin o / usb / bin / env almeno questo è un problema operativo specifico. Potresti essere in grado di risolvere questo problema installando browserify local.
bodokaiser

il mio eseguibile browserfy è in / usr / local / bin / ma sta chiamando qualcos'altro che il percorso è incasinato?
Eduardo Dennis

3
ah devi collegare simbolicamente nodejs a node su ubuntu. Ubuntu installa il nodo come nodejs, quindi devi fare qualcosa come "ln -s / usr / bin / nodejs / usr / bin / node" in modo che il sistema lo trovi anche come nodo
bodokaiser

1
questo lo ha risolto: -Per questo mi sono spaccata la testa nell'ultima ora, puoi inserire la risposta in formato per accettare?
Eduardo Dennis

1
contento che funzionasse, non ero sicuro che fosse davvero questo problema, ecco perché ho commentato prima :)
bodokaiser

Risposte:


246

Alcune distribuzioni Linux installano nodejs non come eseguibile "node" ma come "nodejs".

In questo caso devi collegarti manualmente a "nodo" in quanto molti pacchetti sono programmati dopo il binario "nodo". Qualcosa di simile si verifica anche con "python2" non collegato a "python".

In questo caso puoi fare un semplice collegamento simbolico. Per le distribuzioni Linux che installano i binari del pacchetto /usr/binpuoi farlo

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

5
Questa non è la soluzione per Ubuntu 14.04 perché /usb/sbin/nodeè ax24-node (non correlato a nodejs). Il solo collegamento simbolico a /usr/bin/nodenon funzionerà perché /usr/sbin/nodeviene prima in$PATH
Gareth

8
il modo corretto per risolvere questo problema è usare update-alternatives. vedere la mia risposta qui stackoverflow.com/a/24592328/454615
airtonix

1
effettivamente pensare di più a questo ... link simbolici binari in giro in questo modo è una grande abitudine da adottare se stai cercando di rompere il tuo sistema.
airtonix

sì, ho notato che lo spezza in modi sottili, hai trovato una soluzione migliore?
Eduardo Dennis

1
@EduardoDennis sì, usa update-alternatives. esiste per queste esatte situazioni.
airtonix

52

Nuova risposta:

  1. Disinstalla qualsiasi pacchetto nodejs che hai installato tramite il gestore dei pacchetti di sistema (dnf, apt-get, ecc.), Elimina tutti i collegamenti simbolici stupidi che hai ricreato ad ogni aggiornamento (lol).
  2. Installa NVM,
  3. usa nvm per installare nodejs: nvm install 6

Vecchia risposta:

Qualsiasi discorso sulla creazione di collegamenti simbolici o sull'installazione di qualche altro pacchetto di nodi è falso e non sostenibile.

Il modo corretto per risolvere questo problema è:

  1. installa semplicemente il pacchetto nodejs con apt-get come hai già
  2. utilizzare update-alternativesper indicare il tuo codice binario nodejs#!/usr/bin/env node

Così :

sudo apt-get install nodejs
sudo update-alternatives --install /usr/bin/node nodejs /usr/bin/nodejs 100

Questo ora diventa sostenibile durante gli aggiornamenti dei pacchetti, i dist-upgrade e così via.


Questa è una soluzione per il mio problema stackoverflow.com/questions/26155795/…
Alon Carmel

Grazie, ottima soluzione, il trucco con i collegamenti simbolici è quello più ripetuto in rete ma non ha funzionato per me.
Emilia Tyl

La vera risposta corretta ora è usare NVM su Linux e Nodist su Windows.
airtonix

35

Corri apt-get install nodejs-legacy.

Alcune distribuzioni Linux hanno cambiato il nome binario node.js rendendolo incompatibile con molti pacchetti node.js. Il pacchetto nodejs-legacyfornisce un collegamento simbolico per risolvere questo problema.


2
Questa è la soluzione per Ubuntu 14.04 perché /usb/sbin/nodeè ax24-node (non correlato a nodejs). Il solo collegamento simbolico a /usr/bin/nodenon funzionerà perché /usr/sbin/nodeviene prima in$PATH
Gareth

Mi ha aiutato. Grazie!
Lapidus

apt-get install nodejs-legacy. dice che per Windows l'utente "apt-get" non è riconosciuto come comando interno o esterno, programma eseguibile o file batch.
Swift

7

È inoltre possibile installare Nodejs utilizzando NVM o Nodejs Version Manager . Ci sono molti vantaggi nell'usare un gestore delle versioni. Uno di loro è che non devi preoccuparti di questo problema.


Istruzioni:


sudo apt-get update
sudo apt-get install build-essential libssl-dev

Una volta installati i pacchetti prerequisiti, è possibile estrarre lo script di installazione di nvm dalla pagina GitHub del progetto. Il numero di versione potrebbe essere diverso, ma in generale puoi scaricarlo e installarlo con la seguente sintassi:

curl https://raw.githubusercontent.com/creationix/nvm/v0.16.1/install.sh | sh

Questo scaricherà lo script e lo eseguirà. Installerà il software in una sottodirectory della tua home directory in ~/.nvm. Aggiungerà anche le righe necessarie al ~/.profilefile per utilizzare il file.

Per accedere alla funzionalità nvm, dovrai disconnetterti e riconnettersi di nuovo, oppure puoi trovare il file ~ / .profile in modo che la tua sessione corrente sia a conoscenza delle modifiche:

source ~/.profile

Ora che hai installato nvm, puoi installare versioni isolate di Node.js.

Per scoprire le versioni di Node.js disponibili per l'installazione, puoi digitare:

nvm ls-remote
. . .

v0.11.10
v0.11.11
v0.11.12
v0.11.13
v0.11.14

Come puoi vedere, la versione più recente al momento della stesura di questo articolo è la v0.11.14. Puoi installarlo digitando:

nvm install 0.11.14

Di solito, nvm passerà a utilizzare la versione installata più di recente. Puoi dire esplicitamente a nvm di utilizzare la versione che abbiamo appena scaricato digitando:

nvm use 0.11.14

Quando installi Node.js utilizzando nvm, l'eseguibile si chiama node. Puoi vedere la versione attualmente utilizzata dalla shell digitando:

node -v

Il tutorial completo può essere trovato qui


sì, più uno per i gestori delle versioni dell'ambiente. sicuramente una risposta molto migliore della mia nonostante il nostro sia il modo corretto per farlo. Dirò che nvm è più rivolto a workstation interattive non a server di produzione (ma non vedo perché non si possa usarlo lì) ... personalmente sono più propenso a utilizzare le immagini docker in produzione.
airtonix


0

Mi sembra lo stesso problema quando costruisco atom in Linux.

sudo apt-get install nodejs-dev

Risolvi la mia domanda spero di esserti utile.


0

Se non vuoi creare un link simbolico puoi farlo. funziona in Ubuntu

#!/usr/local/bin/node --harmony

L'armonia tag è per la nuova armonia ECMAscript


0
  1. esegui il comando which nodeil risultato sarà qualcosa

    /home/moh/.nvm/versions/node/v8.9.4/bin/node

  2. Copia il percorso che hai sopra, quindi esegui il comando nel passaggio 3.

  3. ln -s /home/moh/.nvm/versions/node/v8.9.4/bin/node /usr/bin/node


-1

Devi chiamare "nodejs" e non "node". Per verificarlo, digita node -vsulla shell: se non viene trovato nulla, prova nodejs -v. Se viene visualizzato un numero di versione, il comando che dovresti usare è nodejse non node. Pertanto, devi modificare la chiamata a browserify nel tuo script da nodea nodejs(come mostrato di seguito): sostituire

#!/usr/bin/env node

con

#!/usr/bin/env nodejs

Potrebbe anche essere necessario aprire lo script come superutente.

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.