how to update npm on macOS

MacosNpm

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

enter image description here


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.

  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.

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.

  1. sudo nano /usr/local/lib/node_modules/npm/package.json
  2. 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"

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
QuestionNonCreature0714View Question on Stackoverflow
Solution 1 - MacosmarloView Answer on Stackoverflow
Solution 2 - MacosdohView Answer on Stackoverflow
Solution 3 - MacosJuned KhanView Answer on Stackoverflow
Solution 4 - MacosLonelyView Answer on Stackoverflow
Solution 5 - MacosCharles KornoeljeView Answer on Stackoverflow
Solution 6 - MacosVihar ManchalaView Answer on Stackoverflow
Solution 7 - MacosMr. 14View Answer on Stackoverflow