npm update打破了npm

Way*_*eio 29 linux node.js npm

我只是按照本指南更新npm(因为我的nodered相机模块不工作)并运行

npm install -g npm
Run Code Online (Sandbox Code Playgroud)

但现在我的npm安装似乎完全坏了.如果我只是打字

npm
Run Code Online (Sandbox Code Playgroud)

要么

npm update
Run Code Online (Sandbox Code Playgroud)

我明白了

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

SyntaxError:在严格模式之外尚不支持块范围的声明(let,const,function,class)

我试过了

sudo apt-get remove npm
sudo apt-get install npm
Run Code Online (Sandbox Code Playgroud)

但重新安装并没有帮助.

我认为我的节点版本需要从v4.8.2升级,但我认为这只能用npm进行?

Max*_*amy 35

你可能已经安装了npm,一个在/usr/local/bin,另一个在/usr/bin.

尝试运行此:npm (您可能需要之前运行的:npm)

一旦你有一个正在运行的npm版本,使用npm安装更新版本的node和npm并删除你的linux发行版本.

如果第一个解决方案不起作用,另一种方法是安装最新版本的节点(当然不使用npm):

curl -sL https://deb.nodesource.com/setup_10.x | sudo -E bash -
sudo apt-get install -y nodejs
Run Code Online (Sandbox Code Playgroud)

  • @MaximeChéramy谢谢,它的工作.你救了我的一天. (3认同)
  • 运行:/ usr/bin/npm卸载npm给我:/ usr/bin/npm:没有运行这样的文件或目录:/ usr/local/bin/npm uninstall npm给我:/ usr/local/lib/node_modules/npm /bin/npm-cli.js:79让notifier = require('update-notifier')({pkg})^^^语法错误:在严格模式之外尚不支持块范围的声明(let,const,function,class) (2认同)

Pie*_*tto 7

(centos的解决方案。...我认为它也可以在ubuntu上使用):

为了完全清理我的centos机器,我还另外做了以下操作-我的用户是“ centos”,我的家是/ 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
Run Code Online (Sandbox Code Playgroud)

仅在这一点上,我再次重新安装:

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
Run Code Online (Sandbox Code Playgroud)

事情又重新开始了:

node --version
v11.4.0
npm --version
6.4.1
Run Code Online (Sandbox Code Playgroud)