Node.js npm-v显示错误版本

Node.js npm-v显示错误版本,node.js,npm,cmder,Node.js,Npm,Cmder,我在Windows计算机上使用Cmder(基于ConEmu的终端)中的bash shell 我正在关注nodeschool.io(一个包含大量教程的网站,您可以使用命令行完成这些教程)的how to npm研讨会。npm研讨会的第一个模块要求您使用npm-v检查npm的版本,如果不是最新版本,则要求您使用npm install-g npm获取最新版本 因此,我输入了这个命令,即,npm install-g npm,当我去验证how to npm时(验证是nodeschool检查您是否成功满足挑战

我在Windows计算机上使用Cmder(基于ConEmu的终端)中的bash shell

我正在关注nodeschool.io(一个包含大量教程的网站,您可以使用命令行完成这些教程)的how to npm研讨会。npm研讨会的第一个模块要求您使用
npm-v
检查npm的版本,如果不是最新版本,则要求您使用
npm install-g npm
获取最新版本

因此,我输入了这个命令,即,
npm install-g npm
,当我去验证how to npm时(验证是nodeschool检查您是否成功满足挑战要求的方式),how to npm说我当前的版本是7.15.1(这确实是npm的最新版本),所以我通过了。(在运行
npm安装-g npm
之前,我失败了,因为我的npm版本不是最新的npm版本)

但是,当我再次键入
npm-v
时,它仍然显示6.14.13(旧版本)。我试着关闭并重新打开我的终端,重新安装最新版本,等等,但是
npm-v
一直显示旧版本。这不是世界上最大的交易,但我想知道为什么会发生。how to npm nodeschool模块识别出我的版本是最新的,但是Bash一直显示旧版本号。即使我使用Bash运行install命令,cmd.exe和其他shell在输入
npm-v
时也会正确显示新的更新版本。只有Bash一直显示旧版本号

为什么会这样?为什么我不能更新Bash使用的npm版本。 我试过
npm安装-gnpm@latest
npm安装-gnpm@7.15.1
手动操作,但都不起作用。Bash的npm版本在6.14.13上被卡住了。我可以在其他shell中自由轻松地将版本更改为新版本和旧版本,但在Bash中则不行

编辑:我已经计算出,执行
bash-c cmd
,然后再次键入
bash
将在该会话期间显示正确的npm版本,但是如果我退出终端并再次打开它,npm版本将返回到旧版本

Edit2:解决方法是以管理员身份运行powershell并执行以下操作

Set-ExecutionPolicy Unrestricted -Scope CurrentUser -Force
npm install -g npm-windows-upgrade
npm-windows-upgrade

听起来您可能安装了多个版本。如果您使用的是bash on Cmdr,则应该能够使用which命令
哪个npm
来验证您使用的是您应该使用的版本。@Deadron这样做会给我路径/c/Program Files/nodejs/npm这听起来像标准安装路径,但只有您知道本地系统是如何安装的。对,作为专业节点开发人员,我的评论是:这太奇怪了,永远不要升级npm。只安装正确版本的Node,因为它随npm一起提供,特别是:已知可与该版本的Node一起使用的npm版本。如果您使用纯Windows,安装正确版本的Node就足够了,您就完成了。如果您也使用WSL,则更新WSL中节点的版本(例如windows允许您使用的linux bash),因为它实际上是一个独立的操作系统,在windows内部运行,有自己的应用程序安装列表和运行环境。如果Cmder使用windows
cmd
系统,则应显示与常规
cmd
相同的版本。如果它使用WSL bash,则仅当您没有在WSL bash中安装node或npm时,它才会显示与
cmd
相同的内容。如果您这样做了:恭喜,该版本现在将始终获胜,因为WSL bash将始终使用其自己安装的应用程序,并且只有在linux子系统中找不到Windows应用程序时才尝试运行该应用程序。因此,听起来您犯了在WSL bash中安装
npm
(甚至可能没有节点)的错误。因此:打开bash,并使用
apt
卸载那里的npm/node。让它使用Windows版本。