Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

npm update broke npm

Tags:

linux

node.js

npm

I just followed this guide to update npm (as my nodered camera module wasn't working) and ran

npm install -g npm

but now my npm install seems completely broken. If I just type

npm

or

npm update

I get

/usr/local/lib/node_modules/npm/bin/npm-cli.js:79 let notifier = require('update-notifier')({pkg}) ^^^

SyntaxError: Block-scoped declarations (let, const, function, class) not yet supported outside strict mode

I've tried

sudo apt-get remove npm
sudo apt-get install npm

but the reinstall didn't help.

I think my node version needs upgrading from v4.8.2 but I thought that was only possible with npm?

like image 386
Wayneio Avatar asked May 13 '18 13:05

Wayneio


People also ask

Why npm install is not working?

The Npm command not found error can appear when you install or upgrade npm. On Windows, the cause of this error could be that a PATH or system variable is not correctly set. The error can also occur if you do not have npm or Node. js installed, have an outdated version, or have permission issues.

How do I completely reinstall npm?

Using the official Node installer is the easiest way to reinstall Node. js and npm on your Windows environment. To use this option, you can go to the Node. js download page and reinstall the latest Node.

Does npm install run npm update?

The npm install installs all modules that are listed on package. json file and their dependencies. npm update updates all packages in the node_modules directory and their dependencies.


5 Answers

You probably have npm installed twice, one is in /usr/local/bin and the other in /usr/bin.

First, you can try to remove the npm module that has been installed by upgrading npm. Try to run this:

  • rm -r /usr/local/lib/node_modules/npm
  • /usr/bin/npm uninstall npm

Once you have a running version of npm, install a more recent version of node before upgrading npm. Then, remove the version of your linux distribution.

If the first solution doesn't work, another approach is to install a recent version of node (without using npm of course):

curl -sL https://deb.nodesource.com/setup_14.x | sudo -E bash - sudo apt-get install -y nodejs 
like image 107
Maxime Chéramy Avatar answered Sep 24 '22 20:09

Maxime Chéramy


(solution for centos....I assume it would work also on ubuntu):

to clean up completely my centos machine, I have additionally done the following - my user is "centos" and my home is /home/centos:

sudo rm -rf /usr/local/bin/npm 
sudo rm -rf /usr/local/bin/npx
sudo rm -rf /usr/lib/node_modules/
sudo rm -rf /usr/bin/npm
sudo rm -r /usr/local/lib/node_modules/
sudo rm -rf /usr/local/bin/node
sudo rm -rf /usr/bin/npm
sudo rm -rf /usr/lib/node_modules/
rm -rf /home/centos/.npm/
rm -rf /home/centos/node*
rm -rf /home/centos/.node-gyp/
sudo rm -rf /root/.npm/
sudo rm /usr/bin/node
sudo rm -rf /usr/local/include/node

only at this point I reinstalled again:

wget http://nodejs.org/dist/latest/node-v11.4.0-linux-x64.tar.gz
sudo tar --strip-components 1 -xzvf node-v* -C /usr/local

and things are working again:

node --version
v11.4.0
npm --version
6.4.1
like image 20
Pierluigi Vernetto Avatar answered Sep 22 '22 20:09

Pierluigi Vernetto


To those who used google to find this, you may be tempted to install via curl -sL https://deb.nodesource.com/setup_10.x | sudo -E bash - and then installing with sudo apt install nodejs.

However, I somehow ran into this issue regardless. Please keep in mind that npm@6 dropped support for node@<=4, and that is a contributing factor here. If you want to be sure that everything is installed at the latest, correct versions, I very highly recommend installing through nvm.

Via the nvm instructions on their GitHub: You can add the install script with

curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.34.0/install.sh | bash

Then you can start using nvm. You will likely have to restart your terminal, so after installation, exit the terminal, start it up again, and check that nvm is installed with nvm --version.

If everything goes well, you can install any specific version of node with npm in tow. The latest stable version of node as of writing this is 10.15.3, so

 nvm install 10.15.3

And of course, if you need help, nvm --help has a list of options.

like image 23
ZontarZon Avatar answered Sep 21 '22 20:09

ZontarZon


If you are using nvm to install npm and node, try this solution.

  1. Get to know where exactly is the currently used node and npm is installed:

    which node

    In my case, it was /home/ubuntu/.nvm/versions/node/

  2. Now, delete all the versions of node using:

    sudo rm -rf /home/ubuntu/.nvm/versions/node/

  3. You can now use nvm to install your required version of node and npm.

    nvm install 4.9.1

like image 45
Achint Sharma Avatar answered Sep 24 '22 20:09

Achint Sharma


Other answers didn't work for me on Ubuntu and ended up in a dead end, with a broken npm or unable to reinstall/update npm.

The radical solution I used :

1/ Remove all traces of node. Follow this page, using the remove.sh script at the bottom : http://kselax.ru/en/npm-errors/

2/ Then reinstall from scratch nodejs + npm using the latest install script : https://github.com/nodesource/distributions/blob/master/README.md

like image 29
Thibault Avatar answered Sep 21 '22 20:09

Thibault