How to Update Npm on macOS

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?

12

This works on my mac.

Based on docs :

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.)

4

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"
3

npm install -g npm@latest works fine!! and you can also replace the latest for specific versions like npm install -g npm@5.6.0

I hope it will help!!!

0

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":

And so I can change between versions too.

In my case, none of the previous answers worked. For me, a working solution was a simple, five-step process.

  1. 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.

  1. 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.

  1. 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.

  1. 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.

  1. 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.

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.

  1. sudo nano /usr/local/lib/node_modules/npm/package.json
  2. change "version" : "5.6.0" to "verison": "5.8.0"
3

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"
1
Sophia Al-Mansoor

Sophia Al-Mansoor

Global Business & E-Commerce Reporter

Sophia analyzes international trade, startup ecosystems, retail transformation, and supply chain logistics for modern digital publications.

Share this article
Twitter Facebook Pinterest