You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

npm更新后彻底崩溃,Node.js v4.8.2升级遇阻求助

问题背景

我在调试Node-RED摄像头模块时遇到问题,于是尝试更新npm来解决,执行了命令:

npm install -g npm

结果现在npm完全崩溃了,输入任何npm命令(比如npmnpm 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:
    curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.7/install.sh | bash
    
    执行完后,重启终端或者运行以下命令让nvm立即生效:
    source ~/.bashrc
    
  • 安装最新的LTS版本Node.js(长期支持版,稳定可靠):
    nvm install --lts
    
  • 设置默认使用这个新版本:
    nvm alias default node
    
  • 验证安装成功:
    node -v
    npm -v
    
    此时你应该能看到较新的Node.js和npm版本,npm也能正常工作了。

方法二:直接通过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

火山引擎 最新活动