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?
sudo /usr/bin/npm install -g n
/usr/local/node/bin
to your $PATH
, but npm
should be installed in /usr/local/bin
. The first directory isn't in secure_path
which explains why sudo
can't find it.
nvm
on Ubuntu here - with @robertklep comment, I tried sudo /home/${user}/.nvm/version/node/${version}/bin/npm install
and it worked.
I had to do
sudo apt-get install npm
that worked for me.
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.
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)"
$ brew update
$ brew uninstall node
$ brew install node
$ brew postinstall
brew uninstall node
did not work for me, but I carried on with the brew install node
and brew postinstall
and it fixed the problem. Thanks
brew postinstall
do exactly?
brew postinstall
is redundant
brew install node
was unable to overwrite the symlink of an older version. I had to run brew link --overwrite node
which fixed the problem.
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
%HOME%/.nvm/versions/node/v7.4.0/bin/npm
). Unfortunate that I will have to reference this answer each time I update using NVM due to how the version in the path will change
sudo ln -s $(whereis node) /usr/bin/node
And so on. in your bash profile.
** 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
chmod
should this directory be?
drwxr-xr-x
are the defaults for lib. That said, do NOT use the recursive feature -R
when setting the folder back.
chmod 777
unless you have a damned good reason to.
I had to do the following:
brew update brew uninstall node Visit https://nodejs.org/en/ download the file Install the downloaded file
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
On macOS, this worked for me:
brew reinstall node
unix
, but it might still be helpful since it's the top Google search result for "macos npm command not found"
For CentOS users, this works for me:
sudo yum install npm
yum install epel-release; yum install npm
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
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
You can make symbolic link & its works for me.
find path of current npm
which npm
make symbolic link by following command
sudo ln -s which/npm /usr/local/bin/npm
Test and verify.
sudo npm -v
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!
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
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
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
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.
Appended npm binary path to sudo path using visudo and editing "secure_path"
Now "sudo npm" works
I resolved this problem by
apt-get install npm2deb
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
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
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/
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'
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
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
https://i.stack.imgur.com/xvgie.png
then refereshed .bashrc using
. ~/.bashrc
there after
npm: command not found
went away
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.
In my case, for some reason after installing some python modules, I suddenly start getting messages saying node
is not installed or is not recognized as a command. Upon checking, my path is registered in .bashrc
. So, I sourced that file, and everything started working again.
source .bashrc
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
My workaround was to login as root and now I don't have to use sudo again
su root
Installl node.js & simply run
npm install -g bower
from your project dir
Success story sharing
npm
is already installed but not reachable when invoked through sudo. With this solution you reinstall npm which is already existing. This is fighting symptoms rather than finding the cause. I understand that this might correct broken things for some people, but it is misleading, standing like this.sudo apt-get install npm
worked for me.