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

Windows10 PowerShell下Yarn与npm版本不同步且无法卸载旧npm求助

解决思路与步骤

你的问题核心是系统PATH环境变量的优先级导致默认调用了Node.js 6自带的旧版本npm,而Yarn是直接调用了它全局安装的npm路径。下面是具体的解决方法:

1. 确认PATH路径优先级

首先打开PowerShell,执行以下命令查看当前的环境变量路径:

$env:PATH

你会看到一长串路径,重点找两个关键位置:

  • Node.js自带npm的路径:通常是C:\Program Files\nodejs\(Node.js安装时会把npm.cmd放在这个目录下)
  • Yarn全局安装npm的路径:就是你看到的C:\WINDOWS\system32\node_modules\.bin

如果Node.js的路径排在Yarn的路径前面,直接输入npm时,系统会优先调用Node自带的旧版本npm。

2. 调整PATH路径顺序(根本解决方法)

  • 右键「此电脑」→「属性」→「高级系统设置」→「环境变量」
  • 在「系统变量」或「用户变量」中找到PATH变量,点击「编辑」
  • 在编辑界面,把Yarn的npm路径(C:\WINDOWS\system32\node_modules\.bin)拖动到Node.js路径(C:\Program Files\nodejs\)的前面
  • 保存所有设置,关闭所有PowerShell窗口后重新打开,再执行npm --version,应该就能看到4.6.1了

3. 用PowerShell别名临时/永久覆盖(备选方案)

如果不想调整PATH,也可以给npm命令设置别名,让它直接指向Yarn安装的版本:

  • 临时生效(仅当前PowerShell会话):
    New-Alias -Name npm -Value "C:\WINDOWS\system32\node_modules\.bin\npm"
    
  • 永久生效(所有PowerShell会话):
    1. 执行以下命令创建/打开PowerShell配置文件:
      if (-not (Test-Path $PROFILE)) { New-Item -Path $PROFILE -Type File -Force }
      notepad $PROFILE
      
    2. 在打开的记事本中加入下面一行内容,保存后关闭:
      New-Alias -Name npm -Value "C:\WINDOWS\system32\node_modules\.bin\npm"
      
    3. 重启PowerShell,别名就会自动生效

补充说明

Node.js 6默认自带的npm 3.10.10是和Node绑定在一起的,所以你之前执行的npm uninstall npm -g只能卸载后来全局安装的版本,无法移除Node自带的那个。通过调整PATH优先级或者设置别名,就能让系统优先使用Yarn安装的npm版本,实现Yarn和npm的版本同步。

内容的提问来源于stack exchange,提问作者thrave

火山引擎 最新活动