Impossibile installare NodeJs: / usr / bin / env: node: nessun file o directory


302

Sto cercando di installare nodeJs nel mio Ubuntu 14.04 per utilizzare GruntJs.

Ho letto su Ubuntu un modo diverso di farlo ( problemi? ), Quindi questo è quello che ho fatto per installarlo:

sudo apt-get install npm

sudo npm install -g grunt-cli

Digitando grunt dopo che ho avuto l'errore:

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

Quindi, ho provato:

curl -sL https://deb.nodesource.com/setup | sudo bash -

sudo apt-get install -y nodejs

sudo apt-get update

E riprovando, e ancora ricevendo l'errore, ho provato:

sudo add-apt-repository https://launchpad.net/~chris-lea/+archive/node.js/

sudo apt-get install -y nodejs

Ho questo messaggio:

nodejs is already the newest version.
0 to upgrade, 0 to newly install, 0 to remove and 3 not to upgrade.

Ho provato una pulizia nel caso in cui:

sudo apt-get autoremove

Ma no, l'errore è ancora lì: quando digito grugnito ottengo ancora /usr/bin/env: node: No such file or directory

Cosa dovrei fare?

Risposte:


794

Fare un collegamento simbolico risolve il problema:

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

(I miei ringraziamenti e +1 voto alla risposta di bodokaiser ).


97
sudo apt-get install nodejs-legacycrea anche questo link, vedere la descrizione su pacchetti.debian.org/sid/nodejs-legacy
anatoly techtonik

1
Il collegamento simbolico ha risolto il problema e risparmiato molto tempo di sviluppo. Grazie!
Farzad YZ,

Questa correzione è davvero un vero toccasana. Soprattutto, se stai seguendo la guida alle autorizzazioni per la correzione qui docs.npmjs.com/getting-started/fixing-npm-permissions
Josh Frankel

Grazie! Questo mi ha salvato il pomeriggio, provando a configurare un'app nodo su google cloud Linux.
jovan,

1
È necessario utilizzare in which nodemodo da ottenere il percorso corretto per il nodo. Quindi il comando sarebbeln -s "$(which node)" /usr/bin/node
technogeek1995

117

Il problema non riguarda la versione del nodo. Invece, è il modo in cui NodeJS è installato di default in Ubuntu. Quando si esegue un'applicazione Node in Ubuntu è necessario eseguire nodejs somethign.jsinvece dinode something.js

Quindi il nome dell'applicazione chiamato nel terminale è nodejse nonnode . Questo è il motivo per cui v'è la necessità di un collegamento simbolico a inoltrare tutti i comandi ricevuti come nodea nodejs.

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

6
Dovrai eseguire questo comando con sudo, se stai ottenendo l'errore "ln: impossibile creare il collegamento simbolico '/ usr / bin / node'"
Suraj Dubey

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

54

Penso che dovresti aggiornare l'ultima versione del nodo

sudo npm cache clean -f
sudo npm install -g n
sudo n stable

1
Solo un consiglio; indentare le righe di codice di 4 spazi;) inoltre, nnon è un comando associato a Node.JS.
Qix - MONICA È STATA MISTREATA il

@David in base alla descrizione del pacchetto su NPM : "Gestisci in modo interattivo tutte le versioni dei tuoi nodi"
frdmn

Risolto il problema per me
critico

ho copiato un laravelprogetto dalla windowsmacchina ubuntu 16.04e ho laravel mixavuto problemi con npm run watchE questa soluzione ha funzionato per me e ora il problema è sparito
AN

29

se sei in grado di accedere al nodo sul terminale Ubuntu usando il comando nodejs, allora questo problema può essere semplicemente risolto usando -creando un collegamento simbolico di nodejs e nodo usando

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

e questo potrebbe risolvere il problema




9

Ho scoperto che questo è spesso un errore erroneo, se si installa da un gestore di pacchetti, il bin potrebbe essere chiamato nodejs, quindi è sufficiente collegarlo in modo simile

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

1
Invece di aggiungere un feedback negativo, fammi sapere nel commento cosa c'è che non va, così posso aiutarti. Dal momento che non c'è nulla di sbagliato nella creazione di un collegamento simbolico soprattutto se ti aiuta a gestire meglio le cose.
Ahmad Awais,

1
Per quanto mi riguarda preferisco questo approccio. È pulito.
Muhammad Gelbana,

8

Se hai già installato nodejs (verifica con which nodejs) e non vuoi installare un altro pacchetto, puoi, come root:

update-alternatives --install /usr/bin/node node /usr/bin/nodejs 99

Questo è il modo Debian corretto.
Tonin,

6

Quando stavo usando gulp ho avuto questo errore.

~$ gulp

/ usr / bin / env: 'node': nessun file o directory

Questo è stato rimosso eseguendo il comando seguente devi tenere presente che la directory / usr / bin ha tutte le autorizzazioni.

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

questo funziona per me ..


5

A seconda di come hai installato il tuo nodo, la maggior parte delle volte potrebbe non essere in / usr / bin /, nel mio caso è stato usato nvm per installare quindi il mio nodo era in ./nvm/versions.

Usando questo comando which nodeho scoperto il percorso, ma per semplificare il lavoro è possibile eseguire questo comando.

nodepath=$(which node); sudo ln -s $nodepath /usr/bin/node

il comando precedente otterrà la posizione del tuo nodo e creerà un collegamento per te.


5

Esistono due soluzioni a questo:

a) Imposta la tua variabile PATH per includere "/ usr / local / bin"

export PATH="$PATH:/usr/local/bin"

b) Crea un link simbolico a "/ usr / bin" che è già nel tuo PERCORSO

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

Spero possa essere d'aiuto.


4

Mentre ln -sè la soluzione più ovvia e semplice, una spiegazione:

A causa di un conflitto con un altro pacchetto, l'eseguibile dai repository Ubuntu si chiama nodejs invece di node. Tienilo a mente mentre esegui il software.

Questo consiglio viene visualizzato durante l'installazione sudo apt-get install nodejs.

Quindi alcuni altri strumenti noti (non so cosa faccia. Pur essendo noto ai repository Ubuntu, non è installato di default in 16.04) occupa quello spazio dei nomi.

Sarebbe stato bello se Ubuntu avesse offerto un consiglio su come risolverlo in modo "pulito", se non facendo a mano ciò che altrimenti farebbe il pacchetto. (una collisione rimane una collisione ... se + quando si verificherebbe)


1
@ Tom-Hale risposta è il modo Ubuntu per questo. Usa le alternative per specificare il nodo corretto
kervin


2

Per il mio caso collegamento ha NON lavorare come segue

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

Ma puoi aprire / usr / local / bin / lessc come root e cambiare la prima riga da node a nodejs.

- #! / usr / bin / env node

+ #! / usr / bin / env nodejs


2

Seguire questi comandi per risolvere il problema.

In un terminale:

  1. Pulisci l'intera cache NPM:

    $ sudo npm cache clean -f
  2. sudo npm install -g n
  3. Installa l'ultima versione stabile di Node.js:

    sudo n stable

Ora è stata installata l'ultima versione di Node.js. Verifica la versione utilizzando:

node -v


0

Per me la risposta accettata non funzionava ancora. Ho iniziato come suggerito qui:

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

Dopo aver fatto questo, ho visualizzato il seguente errore:

/usr/local/lib/node_modules/npm/bin/npm-cli.js:85 let notifier = request ('update-notifier') ({pkg}) ^^^

SintassiErrore: dichiarazioni con ambito a blocchi (let, const, funzione, classe) non ancora supportate al di fuori della modalità rigorosa su exports.runInThisContext (vm.js: 53: 16) in Module._compile (module.js: 374: 25) in Object. Module._extensions..js (module.js: 417: 10) in Module.load (module.js: 344: 32) in Function.Module._load (module.js: 301: 12) in Function.Module.runMain ( module.js: 442: 10) all'avvio (node.js: 136: 18) su node.js: 966: 3

La soluzione era scaricare la versione più recente del nodo da https://nodejs.org/en/download/ .

Quindi ho fatto:

sudo tar -xf node-v10.15.0-linux-x64.tar.xz --directory /usr/local --strip-components 1

Ora l'aggiornamento è stato finalmente completato: npm -vmodificato dalla 3.2.1 alla 6.4.1

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.