吃杠碰小鸡头像
关注
Nvm和环境变量封面图

Nvm和环境变量

nvm切换过程导致的问题,本文详细讲解;

一、环境变量

1.1 用户变量、系统变量

  • 用户变量:用户设置的变量,在本次登录的用户环境可以生效(用户就是可用账号密码登录,一般私人电脑默认admin不区分用户)
  • 系统变量:本电脑环境变量,在这个电脑的所有用户都能生效;
  • 冲突:变量在两边重复,谁更优先?普通变量用户优先,path变量字符串拼接,取先出现的地址,那么也是用户优先;

在这里插入图片描述

1.2 软链接

  • 普通变量:用来存储某个地址(文件夹位置)
  • 软链接:把普通变量的值取出来

在这里插入图片描述

二、指令

2.1 node -v 执行过程

  1. shell 拿到 “node” 这个命令名
  2. 判断是不是内置命令(cd、dir…)→ 否
  3. 遍历 PATH,逐项找匹配的可执行文件(如.exe)
  4. 找到第一个 → 执行它,把 “-v” 作为参数传进去
  5. 都没找到 → 报错 “不是内部或外部命令”
  6. C:\Program Files\nodejs在path里,这里就可以用这个路径找到文件夹下的node.exe,并执行
    在这里插入图片描述

2.2 可执行文件

  • 可执行文件:PATHEXT=.COM;.EXE;.BAT;.CMD;.VBS;…(有优先顺序)
  • 在某一条path路径下,先筛选名称为node的可执行文件(可能多个),再用扩展名排序,取最优先的那个执行

三、NVM

3.1 nvm切换

  • 切换:nvm use 20,将把%NVM_SYMLINK%位置的文件信息修改为node20的执行文件
  • 访问:重新访问的时候,通过这个链接找到node20
  • 链接目录?C:\Program Files\nodejs作为一个链接目录,nvm use将改写路径重定向(源文件并未发生改变,只在目录层转发)

在这里插入图片描述
查看目录是否存在软链接:Get-Item “C:\Program Files\nodejs” | Select-Object LinkType, Target
在这里插入图片描述

3.2 node20在哪

  • nvm i version下载的node版本都保存在nvm目录下

在这里插入图片描述

四、npm

4.1 npm全局包

  • 切换node版本,全局包的位置也在变化,默认是跟随nvm某个node下的全局包node_modules
  • 固化全局包:将全局包固化并共享,npm config set prefix “C:\Users\Administrator\AppData\Roaming\npm”;后续所有-g安装的代码会在这个文件夹里;
  • 查看位置;npm config get prefix查看全局包位置;

在这里插入图片描述

4.2 npm位置

  • npm依赖于node,只要设置好node的环境变量,就能通过node同层级的npm.cmd入口文件找到真正的执行文件;

在这里插入图片描述
在这里插入图片描述

4.3 npm-v

  • 全局包访问?需要设置全局包目录环境变量C:\Users\Administrator\AppData\Roaming\npm(如pnpm、yarn),此时有个问题,该目录下也有npm,会和node自带的npm冲突;解决方案:node环境变量靠前(%NVM_SYMLINK%),全局包环境变量靠后

在这里插入图片描述
在这里插入图片描述

五、综合结论

用户:普通变量
在这里插入图片描述
用户:Path
在这里插入图片描述
系统变量:不用改

  • 全局包固定位置:npm config set prefix “C:\Users\Administrator\AppData\Roaming\npm”

转载自 CSDN-专业IT技术社区

原文链接:https://blog.csdn.net/hole_diss/article/details/167398511

文章来源转载

评论

赞0

评论列表

微信小程序
QQ小程序

关于作者

点赞数:0
关注数:0
粉丝:0
文章:0
关注标签:0
加入于:--