Cannot install NodeJs: /usr/bin/env: node: No such file or directory
Asked Answered
W

22

363

I'm trying to install nodeJs into my Ubuntu 14.04 in order to use GruntJs.

I've read about Ubuntu different way of doing it (issues?), so this is what I've done in order to install it:

sudo apt-get install npm

sudo npm install -g grunt-cli

Typing grunt after that I've got the error:

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

So, I've tried:

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

sudo apt-get install -y nodejs

sudo apt-get update

And trying again, and still getting the error, I've tried:

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

sudo apt-get install -y nodejs

I've got this message:

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

I did try a cleanup just in case:

sudo apt-get autoremove

But nope, the error is still there: when I type grunt I still get /usr/bin/env: node: No such file or directory

What should I do?

Wynne answered 12/10, 2014 at 1:17 Comment(1)
This problem does not occur with Ubuntu 20.04. sudo apt-file find /usr/bin/node lists nodejs: /usr/bin/node. That is, installing the nodejs package installs the expected node executable program.Calyces
W
870

Doing a symlink solves the issue:

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

(My thanks and +1 vote to bodokaiser's answer).

Wynne answered 12/10, 2014 at 1:22 Comment(13)
sudo apt-get install nodejs-legacy creates this link too, see description at packages.debian.org/sid/nodejs-legacyRetainer
This fix is seriously a lifesaver. Especially, if you are following the fixing permissions guide here docs.npmjs.com/getting-started/fixing-npm-permissionsSacerdotal
thanks, this is help me to solved my problem on docker too github.com/yussan/docker-nodejs-boilerplate/tree/master/…Kurtz
I added it to /usr/local/bin just so I remember it's a custom symlink.Reniti
when i run on mac - sudo apt-get install nodejs-legacy it says sudo: apt-get: command not foundUninterrupted
Further information about the name conflict (resolution): lists.debian.org/debian-devel-announce/2012/07/msg00002.htmlOmor
is was ln -s /usr/local/bin/node /usr/local/bin/nodejs for me... just ran which node to find the proper place.Agglomerate
ln: /usr/bin/node: Operation not permittedShererd
@Shererd Obviously, you are editing the /usr/bin directory. Only root can do that.Tragedian
You should use which node so you get the correct path to your node. So the command would be ln -s "$(which node)" /usr/bin/nodePubilis
ln: /usr/bin/node: Operation not permitted even with sudo. OSX.Lowrance
Doesnt work here because /usr/bin/npm: No such file or directory even though Package 1:npm-3.10.10-1.6.17.1.1.el7.x86_64 already installedRebutter
ln: failed to create symbolic link '/usr/bin/node': File existsSprig
F
129

The issue is not with the version of node. Instead, it is the way NodeJS is installed by default in Ubuntu. When running a Node application in Ubuntu you have to run nodejs something.js instead of node something.js

So the application name called in the terminal is nodejs and not node. This is why there is a need for a symlink to simply forward all the commands received as node to nodejs.

sudo ln -s /usr/bin/nodejs /usr/bin/node
Favourable answered 11/12, 2014 at 5:39 Comment(1)
Thanks! Same "issue" on Fedora if you choose to install the nodejs20 package from (binary is named node-20 here) dnf... I had already set an alias for it in zsh (node = node-20) but that was not sufficient for npm to understand but the symlink sure does the trick :) Not sure why the heck the symlink is not created by the package itself..Remonstrance
I
95

if you are using nvm node version manager, use this command to create a symlink:

sudo ln -s "$(which node)" /usr/bin/node
sudo ln -s "$(which npm)" /usr/bin/npm
  • The first command creates a symlink for node
  • The second command creates a symlink for npm
Indention answered 11/7, 2020 at 13:50 Comment(5)
I prefer /usr/local/bin/node insteadGaye
This works, but if you intend to use nvm to actual manage different versions then you have to repeat this every time you nvm to a different version.Niddering
This work, I installed node using nvm, and have problem with running laravel-echo-server which run on node. You saved me after 2 hours. thanksHorrify
This worked. thanks i was getting error /usr/bin/env: ‘node’: No such file or directory when i run git commit.Come
sudo ln -s "$(which node)" /usr/local/bin/node sudo ln -s "$(which npm)" /usr/local/bin/npm These commands will be favorable as doing symlinks in /usr/bin folders are not allowed directly for root users also. will have to disable csrutil, which is not a good practiceKress
A
70

I think you should upgrade lastest node version

sudo npm cache clean -f
sudo npm install -g n
sudo n stable
Arthromere answered 12/10, 2014 at 1:23 Comment(5)
Just a tip; indent your lines of code by 4 spaces ;) also, n is not a command that's associate with Node.JS.Reportage
@David based on the package description on NPM: "Interactively Manage All Your Node Versions"Ribaldry
Solved the problem for meGibbsite
i copied a laravel project from windows machine to ubuntu 16.04 and laravel mix had problem with npm run watch AND this solution worked for me and now problem goneCarrico
It should be mentioned here that n is a 3rd-party package manager for NodeJS, and therefore is not installing the "lastest [sic] node version".Ovariectomy
F
29

if you are able to access node on ubuntu terminal using nodejs command,then this problem can be simply solved using -creating a symbolic link of nodejs and node using

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

and this may solve the problem

Frederiksberg answered 12/2, 2016 at 21:13 Comment(0)
F
26

In my case, installing nodejs-legacy solved the issue.

sudo apt-get install nodejs-legacy
Frontal answered 27/3, 2016 at 9:44 Comment(0)
D
11

Just do

$ sudo apt-get install nodejs-legacy

And it will start working.

Directoire answered 7/6, 2017 at 10:27 Comment(0)
C
10

If you already have nodejs installed (check with which nodejs) and don't want to install another package, you can, as root:

update-alternatives --install /usr/bin/node node /usr/bin/nodejs 99
Congeal answered 3/8, 2016 at 4:35 Comment(2)
This is the proper Debian way.Several
this worked for me. ubuntu 20,node 10 npm 8Epps
M
9

I've found this is often a misnaming error, if you install from a package manager you bin may be called nodejs so you just need to symlink it like so

ln -s /usr/bin/nodejs /usr/bin/node
Mock answered 29/7, 2016 at 9:54 Comment(2)
Instead of adding a negative feedback, let me know here in the comment what is wrong, so I can help you with that. Since there is nothing wrong in creating a symlink especially if it helps you manage things better.Mock
I for my self prefer this approach. It's clean.Weekender
K
8

Depending on how you installed your node, most of the time it might not be in /usr/bin/, in my own case it was I used nvm to install so my node was in ./nvm/versions.

Using this command which node I found out the path, but to make the work easier you can run this command.

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

the above command will get the location of your node and create a link for you.

Kr answered 3/6, 2018 at 0:15 Comment(0)
P
6

When I was using gulp i got this error.

~$ gulp

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

This was removed by executing following command you have to keep in mind that /usr/bin directory has all permissions.

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

this works for me..

Peso answered 30/4, 2017 at 8:55 Comment(1)
I had the same issue, but the solution didnt worked. I check whether node is installed or not using "node -v" command, and found it missing. It must be because I upgraded from 10.04 to ubuntu 20.04 recently.Batts
I
6

There are two solutions to this:

a) Set your PATH variable to include "/usr/local/bin"

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

b) Create a symlink to "/usr/bin" which is already in your PATH

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

I hope it helps.

Ironworks answered 28/9, 2018 at 8:47 Comment(0)
B
6

Follow these commands to fix the problem.

In a terminal:

  1. Clean the entire NPM cache:

    $ sudo npm cache clean -f
    
  2. sudo npm install -g n
    
  3. Install the latest stable version of Node.js:

    sudo n stable
    

Now the latest version of Node.js was installed. Check the version using:

node -v
Bryant answered 21/5, 2019 at 9:43 Comment(1)
Worked! Great..Buchenwald
S
6

In case it's installed by using snap,

sudo ln -sfn /snap/node/current/bin/node /usr/bin/node
Sprain answered 24/8, 2021 at 19:54 Comment(0)
S
4

While ln -s is the obvious easiest fix, a piece of explanation:

Because of a conflict with another package, the executable from the Ubuntu repositories is called nodejs instead of node. Keep this in mind as you are running software.

This advice comes up, when installing sudo apt-get install nodejs.

So some other known tool (I don't know what it does. While being known to ubuntu repositories, it is not installed by default in 16.04) occupies that namespace.

Would have been nice, if Ubuntu had offered an advice how to fix this 'cleanly', if not by doing by hand what otherwise the package would do. (a collision remains a collision... if+when it would occur)

Sacramental answered 28/10, 2016 at 14:46 Comment(1)
@tom-hale answer is the Ubuntu way for this. You use alternatives to specify the correct nodeMineral
U
2
sudo PATH="$PATH:/usr/local/bin" npm install -g <package-name>
Unshroud answered 24/3, 2017 at 11:22 Comment(0)
T
2

For my case link did NOT work as follow

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

But you can open /usr/local/bin/lessc as root, and change the first line from node to nodejs.

-#!/usr/bin/env node

+#!/usr/bin/env nodejs

Thunderstruck answered 8/12, 2017 at 11:0 Comment(0)
U
1

it's been 7 years ago and the problems still relevant and occurred.

Oke here my problem, it's similar but not exactly the same.

When I call this command from Jenkins

ssh [email protected] "pm2 restart app"

then error /usr/bin/env Node No Such file or directory

Then here my solution:

on server xxx.xxx.xxx.xxx

It relink /usr/bin/node

First: I remove the existing one with command "rm -f /usr/bin/node"

Second: I create new link with this command "ln -s /root/.nvm/versions/node/v14.17.4/bin/node /usr/bin/node"

Node version it's depends on your installation. May it help.

THe bottom line for this error is link of node.

Underneath answered 5/10, 2022 at 15:44 Comment(0)
B
0

Just rename the command or file name ln -s /usr/bin/nodejs /usr/bin/node by this command

Battlement answered 29/4, 2018 at 19:44 Comment(0)
D
0

For me the accepted answer did not yet work. I started off as suggested here:

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

After doing this I was getting the following error:

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

SyntaxError: Block-scoped declarations (let, const, function, class) not yet supported outside strict mode at exports.runInThisContext (vm.js:53:16) at Module._compile (module.js:374:25) at Object.Module._extensions..js (module.js:417:10) at Module.load (module.js:344:32) at Function.Module._load (module.js:301:12) at Function.Module.runMain (module.js:442:10) at startup (node.js:136:18) at node.js:966:3

The solution was to download the most recent version of node from https://nodejs.org/en/download/ .

Then I did:

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

Now the update was finally successful: npm -v changed from 3.2.1 to 6.4.1

Doubledecker answered 14/1, 2019 at 17:32 Comment(0)
C
0

For those who have installed NodeJS with nvm.

If like me you have installed, uninstalled, reinstalled some versions you simply need to do this :

nvm use v14.21.1

Or whatever version you are using.

This will recreate the links to node and npm commands that where lost during your 'cleanup' :D

Cryptocrystalline answered 10/11, 2022 at 9:55 Comment(0)
K
-1
sudo nautilus 

Open file manager as admin. Go to /usr/bin and search node.That might have been broken link, so delete it. Now try installing your package. It might work -worked for me

Kilometer answered 11/8, 2022 at 17:2 Comment(0)

© 2022 - 2024 — McMap. All rights reserved.