以下为本人在踩坑并百度解决问题后,摸索出来的答案,不一定对,仅做参考

问题描述

主要问题是按教程安装nvm然后配置环境变量(如果你的nvm命令无效才配),然后install nodejs然后提示输入use [node版本号] ,结果node命名npm一个两个都无法在命令行中被识别成可执行命令,但是nvm安装录存在nodejs对应版本名的文件夹

解决

尝试管理员运行nvm命令,大概率可以解决没有解决或者对这个原理有点兴趣的可以继续看,但是以下都是我自己结合操作结果实际情况的反推分析没有百度,不是大佬,不保证正确,有懂的可以下面直接上课讲一讲

思路

首先命令无法识别基本环境变量没有配置问题,我最开始也是直接按照直接安装nodejs方法添加了被nvm下载nvm安装目录下的nodejs环境变量,这样node命令肯定是能用,但是无法切换版本,脱离了nvm管理node版本的初衷(这样解决还不如直接安装nodejs
node版本号对应的文件夹
上面是nvm安装文件夹 v-*是 nvm install 命令下载nodejs
文件夹中有一个setting.txt文件打开如图
在这里插入图片描述
这是我改过之后的设置,正常来讲初始设置path: C:Program Filesnodejs一个快捷方式文件root是nvm安装目录

从实际情况来看,这是一个初始化配置,**nvm会将这两个路径添加系统变量用户变量命名分别NVM_HOME和NVM_SYMLINK ,**前者是nvm命令生效配置,值是setting文件root值,后者就是path值,因为初始c盘的应该没有C:Program Filesnodejs这个快捷方式,所以你在nvm use时候创建这个快捷方式而这个操作一般需要管理员权限,直接打开cmd而不是管理员方式打开可能会导致创建失败,而nvm use逻辑大概是创建这个快捷方式指向指定的那个版本的nodejs文件夹,也就是第一章图的的v-*文件夹而这个快捷方式在系统变量里面已经配置了,所以可以全局访问到快捷方式指向的文件夹下的命令(也就是nodenpm,nvm use切换这个快捷方式指向的文件夹,也就达到了切换版本的效果

简单来讲就是nvm一个快捷方式注册系统变量,并动态改变这个快捷方式指向的nodejs文件夹,实现版本切换原理还是nodejs的安装路径注册系统变量,但是是间接地通过一个快捷方式来注册,类似于网络中的路由代理

那么这个 C:Program Filesnodejs 创建失败就是node命令无效原因,他初始配置需要c盘创建这个文件,那么未用管理员方式运行概率会导致这个创建失败(至少我发现时候,我确实没有看到这个文件,也就是没有被创建)(反转是后面我先用管理员方式运行nvm发现可以然后为了验证上面一套分析我把这个快捷方式先删除了,再在普通用户权限运行,nvm use时候windows11向我请求管理员授权,就是一个中间的弹窗,选是和否,大家安装软家是经常看到,但是我第一次运行时候并没有请求可能就是这里导致创建失败

综上,如果node命名无效,那就检查我刚刚提到的快捷方式是否创建成功,系统变量中否存在NVM_HOME和NVM_SYMLINK 这两个值,创建失败也不建议手动创建,用管理员身份运行nvm。

如果还是创建失败,那就尝试修改快捷方式的创建位置,放在不用权限目录下。

而我尝试修改setting文件,让这个快捷方式创建在不需要权限d盘,打算实现普通用户可以运行,但是失败还是创建在c盘,也就是默认初始路径,推论:setting文件只是初始化配置,不是类似于.conf 文件的动态配置,最终发现直接修改系统变量 NVM_SYMLINK 的值可以让nvm把快捷方式建在你想要的位置
在这里插入图片描述
这样快捷方式就创建在指定目录下,我这里是nvm安装目录,便于管理
在这里插入图片描述
第一个就是那个nodejs快捷方式,点击进入,在此目录运行cmd ,执行node -v,发现就是nvm use 指定的版本,nvm use 不同版本 ,点击快捷方式后跳转的文件夹会跟着切换,也就是实现了版本切换
比较懒,对于一些可以验证的推论并没有验证,只能说逻辑基本通,大家有兴趣可以执行验证

原文地址:https://blog.csdn.net/DMMAX/article/details/129136620

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任

如若转载,请注明出处:http://www.7code.cn/show_36690.html

如若内容造成侵权/违法违规/事实不符,请联系代码007邮箱suwngjj01@126.com进行投诉反馈,一经查实,立即删除

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注