how to update npm on macOS
MacosNpmMacos Problem Overview
For reasons unknown to me, I haven't been able to update to the latest version of npm on macOS (it works fine on Windows). It displays no error, only 'updated 1 package'.
Using Node.js 8.11.1
node -v
v8.11.1
What version of npm do I have?
$ npm -v
5.6.0
I tried this...
$ npm i -g npm
+ npm@5.8.0
updated 1 package in 7.37s
And it fails to update.
$ npm -v
5.6.0
Where is npm?
$ which npm
/usr/local/bin/npm
So I try brew
...
brew install npm
And it fails...
$ npm -v
5.6.0
***And then I tried this... ***
npm install npm@latest -g
+ npm@5.8.0
updated 1 package in 7.618s
And it fails...
npm -v
5.6.0
With sudo
:
sudo npm i -g npm
+ npm@5.8.0
updated 1 package in 7.794s
And it fails...
npm -v
5.6.0
This also fails...
sudo npm install npm@latest -g
I followed the directions found on this Q&A, completely removing npm and node from my system and reinstalling them from scratch, and it also fails to update.
Screenshot, per request:
Close the terminal, and then re-open the terminal and running:
$ npm -v
5.6.0
sudo
twice:
$ sudo npm i -g npm
+ npm@5.8.0
updated 1 package in 7.478s
$ sudo npm i -g npm
+ npm@5.8.0
updated 1 package in 7.434s
Also fails:
$ npm -v
5.6.0
What did I miss? What's going on here?
Macos Solutions
Solution 1 - Macos
This works on my mac.
Based on docs https://docs.npmjs.com/troubleshooting/try-the-latest-stable-version-of-npm :
npm install -g npm@latest
There is a note stated on the docs that depends on your installation method, you might addd some sudo
.
> Upgrading on *nix (OSX, Linux, etc.) > > (You may need to prefix these commands with sudo, especially on Linux, > or OS X if you installed Node using its default installer.)
Solution 2 - Macos
Perhaps you have already solved this, but here is what I found when I had exactly this issue. I had 2 versions of npm installed.
I verified this as follows:
grep \"version\" ~/.npm-packages/lib/node_modules/npm/package.json
"version": "6.2.0"
grep \"version\" /usr/local/lib/node_modules/npm/package.json
"version": "5.6.0",
I worked around the issue by updating the path in my bash profile, but would like to know why (how) I ended up with 2 versions. Here is the update:
tail -2 ~/.bash_profile
NPM_PACKAGES="${HOME}/.npm-packages"
PATH="$NPM_PACKAGES/bin:$PATH"
Solution 3 - Macos
npm install -g npm@latest
works fine!!
and you can also replace the latest for specific versions
like
npm install -g [email protected]
I hope it will help!!!
Solution 4 - Macos
In my case, only the following has helped:
sudo rm -rf /usr/local/lib/node_modules
sudo rm -rf ~/.npm
brew uninstall --ignore-dependencies node
brew install node
EDIT NOV 21: These days, I bypass brew entirely and use "n":
https://www.npmjs.com/package/n
And so I can change between versions too.
Solution 5 - Macos
In my case, none of the previous answers worked. For me, a working solution was a simple, five-step process.
- Make sure (the old version of) npm is installed.
npm -v
If npm is not installed, then install it on the Mac with Node.js.
- Globally installed the desired version of npm.
npm install -g npm@latest
This command uses the old version of npm (installed by Node), to globally install the latest version of npm at ~/.npm-global/
. Once installed, close and open a new terminal shell.
- Remove the old version of npm installed by Node
rm -r /usr/local/lib/node_modules/npm/
Sometimes this doesn't work, so I had to go into finder to delete the /npm/
folder.
- Make sure to set the correct path variable.
echo $PATH
If ~/.npm-global/bin
does not show up between the colons, then update the path variable. Open up ~/.zshrc
in a text editor and add the following line. If you don't use zsh, open the profile for your corresponding shell (i.e. ~/.bash_profile
)
export PATH=$PATH:$HOME/.npm-global/bin
Save your changes and close the text editor.
- Close and reopen the terminal shell and run
npm -v
to check that npm is correctly on the latest version.
The reason for updating the path variable is because the npm cli suggests you update npm with npm install -g npm
which will install npm at a different location than where Node installs npm originally.
Solution 6 - Macos
I faced the same problem. You might have already installed the npm version, and now it is time to point the new npm version install. You can do that by following below steps.
sudo nano /usr/local/lib/node_modules/npm/package.json
- change
"version" : "5.6.0"
to"verison": "5.8.0"
Solution 7 - Macos
In my case, I'm using nvm
to manage different versions of node
. In order to upgrade npm version, I have to
1 - Install the latest version of npm by navigating to your current version of node
cd ~/.nvm/versions/node/v10.9.0
npm install npm
or you can probably use
nvm install-latest-npm
2 - Edit $PATH
to point to your current version of node
NPM_PACKAGES="${HOME}/.nvm/versions/node/v10.9.0"
PATH="$NPM_PACKAGES/bin:$PATH"