npm更新后彻底崩溃,Node.js v4.8.2升级遇阻求助
问题背景
我在调试Node-RED摄像头模块时遇到问题,于是尝试更新npm来解决,执行了命令:
npm install -g npm
结果现在npm完全崩溃了,输入任何npm命令(比如npm或npm update)都会弹出如下错误:
/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
我试过用以下命令重装npm,但问题依然存在:
sudo apt-get remove npm sudo apt-get install npm
现在我意识到问题出在我的Node.js版本是v4.8.2,这个版本太老了,不兼容最新的npm,但我以为升级Node.js必须通过npm,不知道该怎么办,求帮忙!
解决方案
别担心,你的判断完全正确——Node.js v4.8.2是早已停止维护的老旧版本,最新版的npm已经不再兼容它了。而且升级Node.js根本不需要依赖npm,我们可以用更可靠的方式直接升级:
方法一:使用nvm(推荐,灵活管理多版本)
nvm是Node.js版本管理器,能轻松安装、切换不同版本的Node.js,步骤如下:
- 先彻底卸载现有Node.js和残留文件,避免冲突:
sudo apt-get purge nodejs npm sudo rm -rf /usr/local/lib/node_modules sudo rm -rf ~/.npm - 安装nvm:
执行完后,重启终端或者运行以下命令让nvm立即生效:curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.7/install.sh | bashsource ~/.bashrc - 安装最新的LTS版本Node.js(长期支持版,稳定可靠):
nvm install --lts - 设置默认使用这个新版本:
nvm alias default node - 验证安装成功:
此时你应该能看到较新的Node.js和npm版本,npm也能正常工作了。node -v npm -v
方法二:直接通过apt源安装新版Node.js
如果不想用nvm,也可以更新apt源来安装官方维护的新版Node.js:
- 卸载旧版本:
sudo apt-get purge nodejs npm sudo rm -rf /usr/local/lib/node_modules - 添加NodeSource官方的LTS版本源:
curl -fsSL https://deb.nodesource.com/setup_lts.x | sudo -E bash - - 安装Node.js(会自动附带适配的npm版本):
sudo apt-get install -y nodejs - 验证版本:
node -v npm -v
完成以上任意一种方法后,你的npm就能恢复正常,之后就可以继续调试Node-RED的摄像头模块问题了。
内容的提问来源于stack exchange,提问作者Wayneio




