sudo: npm: command not found

node.jsLinuxUnixNpm

node.js Problem Overview


I'm trying to upgrade to the latest version of node. I'm following the instructions at http://davidwalsh.name/upgrade-nodejs

But when I do:

sudo npm install -g n

I get the error:

sudo: npm: command not found

npm works without sudo. When I do:

whereis node

I see:

node: /usr/bin/node /usr/lib/node /usr/bin/X11/node /usr/local/node

Running:

which npm

Shows:

/usr/local/node/bin/npm

I tried the solution at https://stackoverflow.com/a/5062718/1246159

But I'm still getting the same error. I also looked at the /etc/sudoers file and the relevant line is:

Defaults        secure_path="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"

This looks fine to me. How can I possibly get NPM working with sudo command?

node.js Solutions


Solution 1 - node.js

I had to do

sudo apt-get install npm

that worked for me.

Solution 2 - node.js

The npm file should be in /usr/local/bin/npm. If it's not there, install node.js again with the package on their website. This worked in my case.

Solution 3 - node.js

For MAC users, the follow steps worked for me.

If you get Error for Brew, Here's the command you need to type first in the terminal:

/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install.sh)"


Then run following commands:

$ brew update
$ brew uninstall node
$ brew install node
$ brew postinstall 

Solution 4 - node.js

I had the same problem; here are the commands to fix it:

  • sudo ln -s /usr/local/bin/node /usr/bin/node
  • sudo ln -s /usr/local/lib/node /usr/lib/node
  • sudo ln -s /usr/local/bin/npm /usr/bin/npm
  • sudo ln -s /usr/local/bin/node-waf /usr/bin/node-waf

Solution 5 - node.js

** EDIT **

WARNING! - Doing a chmod 777 is a fairly radical solution. Try these first, one at a time, and stop when one works:

  • $ sudo chmod -R 777 /usr/local/lib/node_modules/npm
  • $ sudo chmod -R 777 /usr/local/lib/node_modules
  • $ sudo chmod g+w /usr/local/lib
  • $ sudo chmod g+rwx /usr/local/lib

$ brew postinstall node is the only install part where I would get a problem

Permission denied - /usr/local/lib/node_modules/npm/.github

So I

// !! READ EDIT ABOVE BEFORE RUNNING THIS CODE !!
$ sudo chmod -R 777 /usr/local/lib
$ brew postinstall node

and viola, npm is now linked

$ npm -v
3.10.10

Extra

If you used -R 777 on lib my recommendation would be to set nested files and directories to a default setting:

  • $ find /usr/local/lib -type f -print -exec chmod 644 {} \;
  • $ find /usr/local/lib -type d -print -exec chmod 755 {} \;
  • $ chmod /usr/local/lib 755

Solution 6 - node.js

I had to do the following:

  1. brew update
  2. brew uninstall node
  3. Visit https://nodejs.org/en/ download the file
  4. Install the downloaded file

Solution 7 - node.js

In order to install npm packages globally with sudo permission, /usr/bin/npm should be available. If npm exists on some other directory, create a soft link like:

sudo ln -s /usr/local/bin/npm /usr/bin/npm

It works on Fedora 25, node8.0.0 and npm5.0.0

Solution 8 - node.js

On macOS, this worked for me:

brew reinstall node

Solution 9 - node.js

For CentOS users, this works for me:

sudo yum install npm

Solution 10 - node.js

If you installed node/npm with nvm, the nvm environment configuration file has to be run before you can use either package.

This is generally found in ~/.nvm/nvm.sh.

To run this automatically, include:

source ~/.nvm/nvm.sh

in the .bash_profile file for your user

If you then want to use sudo with that user, make sure to include the -i parameter to make sudo set the user environment. eg

sudo -iu jenkins npm install grunt-cli

Solution 11 - node.js

You can make symbolic link & its works for me.

  1. find path of current npm > which npm

  2. make symbolic link by following command

> sudo ln -s which/npm /usr/local/bin/npm

  1. Test and verify. > sudo npm -v

Solution 12 - node.js

For debian after installing node enter

curl -k -O -L https://npmjs.org/install.sh    
ln -s /usr/bin/nodejs /usr/bin/node  
sh install.sh

Solution 13 - node.js

simply reinstall .

On RHEL, CentOS and Fedora

sudo yum remove nodejs npm
sudo dnf remove nodejs npm   [On Fedora 22+ versions]

then

yum -y install nodejs npm
dnf -y install nodejs npm   [On Fedora 22+ versions]

easy!.. both node and npm works like a charm now!

Solution 14 - node.js

If you have downloaded node package and extracted somewhere like /opt you can simply create symbolic link inside /usr/local/bin.

/usr/local/bin/npm -> /opt/node-v4.6.0-linux-x64/bin/npm
/usr/local/bin/node -> /opt/node-v4.6.0-linux-x64/bin/node

Solution 15 - node.js

Work for me Resolving EACCES permissions errors when installing packages globally

To minimize the chance of permissions errors, you can configure npm to use a different directory. In this example, you will create and use hidden directory in your home directory.

Back up your computer. On the command line, in your home directory, create a directory for global installations:

 mkdir ~/.npm-global

Configure npm to use the new directory path:

 npm config set prefix '~/.npm-global'

In your preferred text editor, open or create a ~/.profile file and add this line:

 export PATH=~/.npm-global/bin:$PATH

On the command line, update your system variables:

 source ~/.profile

To test your new configuration, install a package globally without using sudo:

 npm install -g jshint

Solution 16 - node.js

I had the same issue,the reason for it was npm package manager was not installed while installing node. This was caused because of the following mistake: In the installation process there is a step called "Custom Setup", here you have the option to choose one of the following:

  1. Node.js runtime (This is selected by default).
  2. npm package manager
  3. Online documentation shortcuts.
  4. Add to Path. If you proceed as it is npm package manager will not be installed and hence you will get the error.

Solution: Select npm package manager when you get these options. This worked for me.

Solution 17 - node.js

Appended npm binary path to sudo path using visudo and editing "secure_path"

Now "sudo npm" works

Solution 18 - node.js

I resolved this problem by

apt-get install npm2deb

Solution 19 - node.js

I also had the same issue in Homestead and tried many ways. I tried with

sudo apt-get install nodejs

I get the following error:

The following packages have unmet dependencies:
 npm : Depends: nodejs but it is not going to be installed
       Depends: node-abbrev (>= 1.0.4) but it is not going to be installed
       Depends: node-ansi (>= 0.3.0-2) but it is not going to be installed
       Depends: node-ansi-color-table but it is not going to be installed
       Depends: node-archy but it is not going to be installed
       Depends: node-block-stream but it is not going to be installed
       Depends: node-fstream (>= 0.1.22) but it is not going to be installed
       Depends: node-fstream-ignore but it is not going to be installed
       Depends: node-github-url-from-git but it is not going to be installed
       Depends: node-glob (>= 3.1.21) but it is not going to be installed
       Depends: node-graceful-fs (>= 2.0.0) but it is not going to be installed
       Depends: node-inherits but it is not going to be installed
       Depends: node-ini (>= 1.1.0) but it is not going to be installed
       Depends: node-lockfile but it is not going to be installed
       Depends: node-lru-cache (>= 2.3.0) but it is not going to be installed
       Depends: node-minimatch (>= 0.2.11) but it is not going to be installed
       Depends: node-mkdirp (>= 0.3.3) but it is not going to be installed
       Depends: node-gyp (>= 0.10.9) but it is not going to be installed
       Depends: node-nopt (>= 3.0.1) but it is not going to be installed
       Depends: node-npmlog but it is not going to be installed
       Depends: node-once but it is not going to be installed
       Depends: node-osenv but it is not going to be installed
       Depends: node-read but it is not going to be installed
       Depends: node-read-package-json (>= 1.1.0) but it is not going to be installed
       Depends: node-request (>= 2.25.0) but it is not going to be installed
       Depends: node-retry but it is not going to be installed
       Depends: node-rimraf (>= 2.2.2) but it is not going to be installed
       Depends: node-semver (>= 2.1.0) but it is not going to be installed
       Depends: node-sha but it is not going to be installed
       Depends: node-slide but it is not going to be installed
       Depends: node-tar (>= 0.1.18) but it is not going to be installed
       Depends: node-underscore but it is not going to be installed
       Depends: node-which but it is not going to be installed
E: Unable to correct problems, you have held broken packages.

Finally I tried with

sudo apt-get dist-upgrade

It worked fine.

root@homestead:/usr/local/bin# npm -v
3.10.10

root@homestead:/usr/local/bin# node -v
v6.13.0

Solution 20 - node.js

My solution is:

sudo -E env "PATH=$PATH" n stable

Works fine for me.

Found it here: https://stackoverflow.com/a/29400598/861615

This happens because you have change default global packages directory

Solution 21 - node.js

Instead of Installing node again which seems like the accepted solution, The Problem is there are no permissions to the nodejs folder/usr/local.
Enter the following command sudo chmod -R 777 /usr/local/nodejs/

Solution 22 - node.js

So, for those using:

NVM and homebrew

make sure to set node version. For me, my node version was no longer set. So, I checked what versions I had using

nvm ls

this listed v16.13.1, so I set it to use this

nvm use 16

once my node version was set, npm commands worked again

Solution 23 - node.js

Remove Node completely:

  brew uninstall --force node

Install again:

brew install node;
which node # => /usr/local/bin/node
export NODE_PATH='/usr/local/lib/node_modules'

Solution 24 - node.js

In case could be useful for anyone that uses rh-* packages this worked for me:

sudo ln -s /opt/rh/rh-nodejs8/root/usr/bin/npm /usr/local/bin/npm

Solution 25 - node.js

Since I have installed node.js using .tar file available on node.js, I had to put the location of the node directory on:

> ~/.bashrc

of root by changing from normal user to root using command:

> sudo -i

then I had to add the path to node where I extracted it into .bashrc file as below: enter image description here

then refereshed .bashrc using

> . ~/.bashrc

there after

npm: command not found

went away

Solution 26 - node.js

For me, any of the methods mentioned above using Homebrew did not work on macOS. So, I uninstalled node using Homebrew and downloaded the node package from https://nodejs.org/en/download/ and installed it. It worked like a charm.

Solution 27 - node.js

If you are using linux delete node_modules folder that exists in /usr/lib

sudo rm -rf node-modules

then reinstall node using curl:

sudo apt-get update
sudo apt install curl build-essential
curl -sL https://deb.nodesource.com/setup_16.x | sudo -E bash -
sudo apt install -y nodejs

Solution 28 - node.js

My workaround was to login as root and now I don't have to use sudo again

su root

Solution 29 - node.js

Installl node.js & simply run

npm install -g bower 

from your project dir

Attributions

All content for this solution is sourced from the original question on Stackoverflow.

The content on this page is licensed under the Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license.

Content TypeOriginal AuthorOriginal Content on Stackoverflow
QuestionMarkView Question on Stackoverflow
Solution 1 - node.jsVelocibadgeryView Answer on Stackoverflow
Solution 2 - node.jsingaView Answer on Stackoverflow
Solution 3 - node.jsGaoView Answer on Stackoverflow
Solution 4 - node.jsVasanth UmapathyView Answer on Stackoverflow
Solution 5 - node.jsJacksonkrView Answer on Stackoverflow
Solution 6 - node.jsmaudulusView Answer on Stackoverflow
Solution 7 - node.jsPrakash RamasamyView Answer on Stackoverflow
Solution 8 - node.jsfriederbluemleView Answer on Stackoverflow
Solution 9 - node.jsfrankchen0130View Answer on Stackoverflow
Solution 10 - node.jsGarreth McDaidView Answer on Stackoverflow
Solution 11 - node.jsdipenparmar12View Answer on Stackoverflow
Solution 12 - node.jsShaharyar ZafarView Answer on Stackoverflow
Solution 13 - node.jsBrian SanchezView Answer on Stackoverflow
Solution 14 - node.jsmipasovView Answer on Stackoverflow
Solution 15 - node.jseustatosView Answer on Stackoverflow
Solution 16 - node.jsSaurabh ShettyView Answer on Stackoverflow
Solution 17 - node.jsmauricio777View Answer on Stackoverflow
Solution 18 - node.jsИгорь ДемянюкView Answer on Stackoverflow
Solution 19 - node.jsThowfeekView Answer on Stackoverflow
Solution 20 - node.jsxargrView Answer on Stackoverflow
Solution 21 - node.jstahervaliView Answer on Stackoverflow
Solution 22 - node.jsDaltronView Answer on Stackoverflow
Solution 23 - node.jsASHISH RView Answer on Stackoverflow
Solution 24 - node.jsLionel TView Answer on Stackoverflow
Solution 25 - node.jsMOHAMMAD WASEEMView Answer on Stackoverflow
Solution 26 - node.jsManasView Answer on Stackoverflow
Solution 27 - node.jsSohaib El MediouniView Answer on Stackoverflow
Solution 28 - node.jsShalabyerView Answer on Stackoverflow
Solution 29 - node.jsYathuGulan UthayanView Answer on Stackoverflow