Impossible d'installer NodeJs: / usr / bin / env: node: Aucun fichier ou répertoire de ce type


302

J'essaie d'installer nodeJs dans mon Ubuntu 14.04 afin d'utiliser GruntJs.

J'ai lu sur Ubuntu différentes façons de le faire ( problèmes? ), Voici donc ce que j'ai fait pour l'installer:

sudo apt-get install npm

sudo npm install -g grunt-cli

Après avoir tapé grognement, j'ai l'erreur:

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

J'ai donc essayé:

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

sudo apt-get install -y nodejs

sudo apt-get update

Et en essayant à nouveau, et en obtenant toujours l'erreur, j'ai essayé:

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

sudo apt-get install -y nodejs

J'ai ce message:

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

J'ai essayé un nettoyage au cas où:

sudo apt-get autoremove

Mais non, l'erreur est toujours là: quand je tape grognement, je reçois toujours /usr/bin/env: node: No such file or directory

Que devrais-je faire?

Réponses:


794

Faire un lien symbolique résout le problème:

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

(Mes remerciements et +1 vote pour la réponse de bodokaiser ).


97
sudo apt-get install nodejs-legacycrée également ce lien, voir la description sur packages.debian.org/sid/nodejs-legacy
anatoly techtonik

1
Le lien symbolique a résolu le problème et économisé beaucoup de temps de développement. Merci!
Farzad YZ du

Cette correction est vraiment une bouée de sauvetage. Surtout, si vous suivez le guide des autorisations de réparation ici docs.npmjs.com/getting-started/fixing-npm-permissions
Josh Frankel

Je vous remercie! Cela m'a sauvé l'après-midi, en essayant de configurer une application de nœud sur Google Cloud Linux.
jovan

1
Vous devez utiliser which nodepour obtenir le chemin d'accès correct à votre nœud. Donc la commande seraitln -s "$(which node)" /usr/bin/node
technogeek1995

117

Le problème n'est pas lié à la version du nœud. Au lieu de cela, c'est la façon dont NodeJS est installé par défaut dans Ubuntu. Lorsque vous exécutez une application Node dans Ubuntu, vous devez exécuter nodejs somethign.jsau lieu denode something.js

Ainsi, le nom de l'application appelé dans le terminal est nodejset non node. Voilà pourquoi il y a besoin d'un lien symbolique simplement en avant toutes les commandes reçues comme nodeà nodejs.

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

6
Vous devrez exécuter cette commande avec sudo, si vous obtenez l'erreur "ln: impossible de créer le lien symbolique '/ usr / bin / node'"
Suraj Dubey

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

54

Je pense que vous devriez mettre à jour la dernière version du nœud

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

1
Juste un conseil; indenter vos lignes de code de 4 espaces;) également, nn'est pas une commande associée à Node.JS.
Qix - MONICA A ÉTÉ BRUÉE

@David basé sur la description du package sur NPM : "Gérer de manière interactive toutes vos versions de nœuds"
frdmn

Résolu le problème pour moi
critiqueur

J'ai copié un laravelprojet de la windowsmachine vers ubuntu 16.04et j'ai laravel mixeu un problème avec npm run watchET cette solution a fonctionné pour moi et maintenant le problème a disparu
AN

29

si vous êtes en mesure d'accéder au nœud sur le terminal ubuntu à l'aide de la commande nodejs, alors ce problème peut être simplement résolu en utilisant -création d'un lien symbolique de nodejs et de nœud en utilisant

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

et cela peut résoudre le problème




9

J'ai trouvé que c'est souvent une erreur de dénomination, si vous installez à partir d'un gestionnaire de paquets, votre bin peut s'appeler nodejs, vous avez donc juste besoin de le lier comme ceci

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

1
Au lieu d'ajouter une rétroaction négative, faites-moi savoir ici dans le commentaire ce qui ne va pas, afin que je puisse vous aider avec cela. Puisqu'il n'y a rien de mal à créer un lien symbolique, surtout s'il vous aide à mieux gérer les choses.
Ahmad Awais

1
Pour ma part, je préfère cette approche. C'est propre.
Muhammad Gelbana

8

Si vous avez déjà installé nodejs (vérifiez avec which nodejs) et que vous ne souhaitez pas installer un autre paquet, vous pouvez, en tant que root:

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

C'est la bonne façon pour Debian.
Tonin

6

Lorsque j'utilisais gulp, j'ai eu cette erreur.

~$ gulp

/ usr / bin / env: 'node': aucun fichier ou répertoire de ce type

Cela a été supprimé en exécutant la commande suivante, vous devez garder à l'esprit que le répertoire / usr / bin a toutes les autorisations.

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

cela fonctionne pour moi ..


5

Selon la façon dont vous avez installé votre nœud, la plupart du temps, il se peut qu'il ne soit pas dans / usr / bin /, dans mon propre cas, j'ai utilisé nvm pour l'installer, mon nœud était donc dans ./nvm/versions.

En utilisant cette commande, which nodej'ai découvert le chemin, mais pour faciliter le travail, vous pouvez exécuter cette commande.

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

la commande ci-dessus obtiendra l'emplacement de votre nœud et créera un lien pour vous.


5

Il existe deux solutions à cela:

a) Définissez votre variable PATH pour inclure "/ usr / local / bin"

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

b) Créez un lien symbolique vers "/ usr / bin" qui est déjà dans votre PATH

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

J'espère que ça aide.


4

Bien que ce ln -ssoit la solution évidente la plus simple, une explication:

En raison d'un conflit avec un autre package, l'exécutable des référentiels Ubuntu est appelé nodejs au lieu de node. Gardez cela à l'esprit lorsque vous exécutez un logiciel.

Ce conseil apparaît lors de l'installation sudo apt-get install nodejs.

Donc, un autre outil connu (je ne sais pas ce qu'il fait. Bien qu'il soit connu des référentiels ubuntu, il n'est pas installé par défaut en 16.04) occupe cet espace de noms.

Cela aurait été bien, si Ubuntu avait offert un conseil sur la façon de résoudre ce problème «proprement», sinon en faisant à la main ce que le paquet ferait autrement. (une collision reste une collision ... si + quand elle se produirait)


1
@ tom-hale answer est la solution Ubuntu pour cela. Vous utilisez des alternatives pour spécifier le nœud correct
kervin


2

Pour mon lien de cas n'a PAS fonctionné comme suit

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

Mais vous pouvez ouvrir / usr / local / bin / lessc en tant que root et changer la première ligne de node en nodejs.

- Noeud!! / usr / bin / env

+ #! / usr / bin / env nodejs


2

Suivez ces commandes pour résoudre le problème.

Dans un terminal:

  1. Nettoyez l'intégralité du cache NPM:

    $ sudo npm cache clean -f
  2. sudo npm install -g n
  3. Installez la dernière version stable de Node.js:

    sudo n stable

Maintenant, la dernière version de Node.js a été installée. Vérifiez la version en utilisant:

node -v


0

Pour moi, la réponse acceptée n'a pas encore fonctionné. J'ai commencé comme suggéré ici:

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

Après avoir fait cela, j'obtenais l'erreur suivante:

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

SyntaxError: les déclarations de portée bloc (let, const, fonction, classe) ne sont pas encore prises en charge en dehors du mode strict sur exports.runInThisContext (vm.js: 53: 16) sur Module._compile (module.js: 374: 25) sur Object. Module._extensions..js (module.js: 417: 10) à Module.load (module.js: 344: 32) à Function.Module._load (module.js: 301: 12) à Function.Module.runMain ( module.js: 442: 10) au démarrage (node.js: 136: 18) à node.js: 966: 3

La solution consistait à télécharger la version la plus récente de node sur https://nodejs.org/en/download/ .

Ensuite, j'ai fait:

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

Maintenant, la mise à jour a finalement réussi: elle est npm -vpassée de 3.2.1 à 6.4.1

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.