nvm管理node版本的各种问题

nvm安装1.2.2版本时,选择2个目录,一个是nvm安装路径,另一个是node.js的安装目录,我分别安装在下面的目录:
root: D:\software\nvm-tool
path: D:\software\nvm-tool\nodejs
然后安装完后,是自动配置好了环境变量的。

问题1:安装了nvm,然后通过nvm install安装了node.js,安装完成,查看版本,其中npm有问题呢,不知道哪里来的双斜杠,提示不是内部或外部命令,但是后面还是运行出来了npm的版本号:
C:\Users\Administrator>node -v
v20.13.1
C:\Users\Administrator>npm -v
'CALL "D:\software\nvm-tool\nodejs\node.exe" "D:\software\nvm-tool\nodejs\node_modules\npm\bin\npm-prefix.js"' 不是内部或外部命令,也不是可运行的程序
或批处理文件。
10.5.2
解决:删除环境变量中的ComSpec。或者在安装完成后,有可能弹出防火墙阻止,这里也会导致上面的问题。

问题2:刚开始nvm用的好好的,一段时间后发现切换至低级的node版本后,npm的版本不跟随变化,且npm -v老是报错,不管怎么切换,都是这个npm版本:npm warn cli npm v11.4.2 does not support Node.js v16.14.2. This version of npm supports the following node versions: ^20.17.0 || >=22.9.0. You can find the latest version at https://nodejs.org/.
11.4.2
然后卸载了所有的node版本,并重装了nvm,问题依旧。
解决:切换或安装一个尽可能高版本的node,然后使用nvm use这个版本,这时候发现npm指令能用了,可以使用npm指令切换到你指定的版本:npm install -g npm@8.0.0,然后再切换node至低版本,发现问题解决,npm版本随着node版本切换。这个问题的出现可能是在 nvm 环境中,运行了 npm i -g npm@latest,这会破坏版本绑定,尽可能别使用这个命令。

问题3:使用npm i -g pnpm安装pnpm,安装顺利完成,但是使用pnpm -v提示不是内部或外部命令,说明pnpm并没有安装在前面的2个目录(自动配置了环境变量)下。使用npm ls -g,发现全局包安装在 D:\Program Files\nodejs,但系统未将该路径加入 PATH,导致无法找到 pnpm 命令。
解决:这个全局包在安装nvm的过程中,从来没有出现/配置过,不知道哪来的,猜测可能是在安装nvm以前,有直接从node官网下载安装过node.js(后面卸载了),然后这个全局包文件夹可能是残留的。这里给这个路径配置下环境变量即可,因为pnpm.cmd就在目录下。但是我觉得挺麻烦,因为我想把所有的文件都放在nvm目录下统一管理,不想在另外搞文件夹,于是把D:\Program Files\nodejs删除,卸载nvm重新安装,发现还是存在这个问题,npm config get prefix输出结果还是D:\Program Files\nodejs,D:\Program Files\nodejs目录也会自动创建,pnpm还是会安装在里面。删除全局配置:
npm config delete prefix --global
npm config delete cache --global
不管用。
问AI吧,烦死了。
AI说npm 配置优先级为:​项目级 > 用户级 > 全局级 > 内置默认。你执行的 --global 参数理论上应修改全局配置,但若存在用户级配置(~/.npmrc)或环境变量覆盖,会导致设置失效。给出了下面方案:
# 手动创建目标目录(以管理员身份运行CMD)
mkdir D:\software\nvm-tool\nodejs
mkdir D:\software\nvm-tool\npm_cache
# 赋予完全控制权限(防止权限不足)
icacls "D:\software\nvm-tool" /grant Administrator:(OI)(CI)F
# 删除全局配置(已执行,此处确认)
npm config delete prefix --global
npm config delete cache --global

# 删除用户级配置(关键!)
npm config delete prefix --user
npm config delete cache --user

# 重新设置并验证
npm config set prefix "D:\software\nvm-tool\nodejs" --global
npm config set cache "D:\software\nvm-tool\npm_cache" --global
npm config get prefix # 此时应输出新路径

这一套组合拳打完,再去npm config get prefix,发现全局包已经由原来的 D:\Program Files\nodejs变更为D:\software\nvm-tool\nodejs,这时候再安装pnpm也在这个目录下了。删除原来的目录D:\Program Files\nodejs,完全不影响运行,问题解决。
这里感觉主要是删除用户级配置起了作用。建议使用nvm后,尽量从nvm里面下载node版本,不要单独下载node安装。

posted @ 2025-07-23 21:42  闲人房gm  阅读(113)  评论(0)    收藏  举报