当前位置: 首页 > article >正文

NVM完全指南:安装、配置与最佳实践

发布于 2025年5月7日 • 阅读时间:10分钟
在这里插入图片描述

💡 TL;DR: 本文详细介绍了如何完整卸载旧版Node.js,安装NVM,配置阿里云镜像源,以及设置node_global与node_cache目录,打造高效Node.js开发环境。

📋 目录

  • 为什么需要NVM?
  • 第一步:彻底卸载旧版Node.js
  • 第二步:安装NVM
  • 第三步:配置阿里云镜像加速
  • 第四步:使用NVM安装Node.js
  • 第五步:配置node_global和node_cache
  • NVM常用命令速查表
  • 常见问题与解决方案
  • 总结

为什么需要NVM?

作为开发者,你是否曾遇到这些问题?

  • 不同项目需要不同的Node.js版本
  • 新版本Node.js发布后,升级可能导致现有项目出错
  • 需要测试代码在多个Node.js版本上的兼容性

NVM (Node Version Manager) 正是为解决这些问题而生的工具。它允许你在同一台电脑上安装和切换多个Node.js版本,大大提高了开发效率和环境灵活性。

现在,让我们开始完整的安装和配置过程。

第一步:彻底卸载旧版Node.js

在安装NVM之前,你需要彻底卸载系统中已有的Node.js,以避免潜在冲突。

Windows系统

  1. 通过控制面板卸载
    • 打开控制面板 > 程序 > 程序和功能
    • 找到Node.js,右键选择"卸载"
    • 按照卸载向导完成操作

我这里是没有node,如果有可以删除

在这里插入图片描述

  1. 清理残留文件
    到指定目录删除对应的文件

    # 删除以下目录(如存在)
    C:\Program Files\nodejs
    C:\Program Files (x86)\nodejs
    C:\Users\{用户名}\AppData\Roaming\npm
    C:\Users\{用户名}\AppData\Roaming\npm-cache
    

    最后删除完事后打开dos 窗口输入where node,如果有则删除
    在这里插入图片描述

  2. 清理环境变量

    • 右键点击"此电脑" > 属性 > 高级系统设置 > 环境变量
    • 删除用户变量和系统变量中的NODE_PATH(如果存在)
    • 在系统变量的Path中删除所有指向nodejs的路径条目

Mac系统

# 使用Homebrew卸载
brew uninstall node# 清理残留文件
rm -rf ~/.npm ~/.node-gyp

Linux系统

# Debian/Ubuntu系统
sudo apt remove nodejs npm
sudo apt purge nodejs npm
sudo apt autoremove# CentOS/RHEL系统
sudo yum remove nodejs npm
sudo yum autoremove# 手动清理(适用于所有Linux发行版)
sudo rm -rf /usr/local/bin/node
sudo rm -rf /usr/local/bin/npm
sudo rm -rf /usr/local/lib/node_modules

第二步:安装NVM

Windows系统

  1. 访问nvm-windows官方发布页下载最新版的nvm-setup.zip,或者点击CSDN链接下载

  2. 解压并运行安装程序

  3. 安装步骤中需要选择:

    • NVM安装路径(默认为C:\Users\{用户名}\AppData\Roaming\nvm,可自定义修改)
      在这里插入图片描述

    • Node.js符号链接路径(默认为C:\Program Files\nodejs,建议是放在对应的nvm后面)
      在这里插入图片描述

  4. 完成安装后,打开dos命令提示符或PowerShell测试安装是否完成

正常按照上面的安装流程是会把环境变量自己安装上去的

Mac/Linux系统

  1. 使用curl安装

    curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.5/install.sh | bash
    

    使用wget安装

    wget -qO- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.5/install.sh | bash
    
  2. 配置环境变量

    安装脚本会自动尝试添加下面的代码到正确的配置文件(~/.bash_profile, ~/.zshrc, /.profile或/.bashrc)。如果没有,请手动添加:

    export NVM_DIR="$([ -z "${XDG_CONFIG_HOME-}" ] && printf %s "${HOME}/.nvm" || printf %s "${XDG_CONFIG_HOME}/nvm")"
    [ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh" # 加载nvm
    [ -s "$NVM_DIR/bash_completion" ] && \. "$NVM_DIR/bash_completion" # 加载bash补全
    
  3. 使配置生效

    source ~/.bashrc  # 或您使用的配置文件
    
  4. 验证安装

    nvm --version
    

    如果显示版本号,则安装成功。

第三步:配置阿里云镜像加速

国内用户在使用NVM安装Node.js时可能会遇到下载速度慢的问题。配置阿里云镜像源可以大幅提升下载速度。

Windows系统

在这里插入图片描述

  1. 在NVM安装目录找到settings.txt文件(默认在C:\Users\{用户名}\AppData\Roaming\nvm目录下,我这里是安装在了D盘)
  2. 编辑此文件,添加以下内容:
node_mirror: https://npmmirror.com/mirrors/node/
npm_mirror: https://npmmirror.com/mirrors/npm/

Mac/Linux系统

  1. 配置npm镜像

    echo "registry=https://registry.npmmirror.com/" > ~/.npmrc
    
  2. 配置NVM镜像

    ~/.bashrc~/.zshrc文件中添加:

    export NVM_NODEJS_ORG_MIRROR=https://npmmirror.com/mirrors/node
    export NVM_NPM_MIRROR=https://npmmirror.com/mirrors/npm
    
  3. 使配置生效

    source ~/.bashrc  # 或source ~/.zshrc
    

第四步:使用NVM安装Node.js

现在NVM已安装完成,让我们安装并管理Node.js版本。

查看可用的Node.js版本

nvm ls-remote  # Mac/Linux
nvm list available  # Windows

在这里插入图片描述

安装最新的LTS(长期支持)版本

nvm install --lts

查看当前已经安装的node

nvm ls

在这里插入图片描述

安装特定版本

nvm install 16.20.0  # 安装Node.js 16.20.0版本

设置默认使用的版本

nvm alias default 16.20.0  # 将16.20.0设为默认版本

切换Node.js版本

nvm use 14.21.3  # 切换到14.21.3版本

在这里插入图片描述

第五步:配置node_global和node_cache

为了更好地管理全局安装的npm包和缓存,我们应该自定义这些目录。

Windows系统

  1. 创建自定义目录

    mkdir "C:\Dev\node_global"
    mkdir "C:\Dev\node_cache"
    
  2. 配置npm使用这些目录
    这个目录可以自定义,但是后面的node_globalnode_cache最好统一

     npm config set prefix "D:\environment\nvm\node_global" 
    

    执行完上面的就执行下面的

     npm config set cache "D:\environment\nvm\node_cache"
    

    上面的D:\environment\nvm可替换,我是为了方便nvm的管理,所以和nvm相关的都设置在了一块
    在这里插入图片描述

Mac/Linux系统

  1. 创建自定义目录

    mkdir -p ~/node_global
    mkdir -p ~/node_cache
    
  2. 配置npm使用这些目录

    npm config set prefix ~/node_global
    npm config set cache ~/node_cache
    
  3. 更新环境变量
    ~/.bashrc~/.zshrc中添加:

    export PATH="$HOME/node_global/bin:$PATH"
    export NODE_PATH="$HOME/node_global/lib/node_modules"
    
  4. 使配置生效

    source ~/.bashrc  # 或source ~/.zshrc
    

验证配置

# 验证npm全局配置
npm config get prefix  # 应显示设置的node_global路径
npm config get cache   # 应显示设置的node_cache路径![在这里插入图片描述](https://i-blog.csdnimg.cn/direct/7ac1627492434c008a7b19e8d45904ce.png)# 测试全局安装
npm install -g yarn
yarn --version  # 检查是否安装成功并可以正常使用

NVM常用命令速查表

命令描述
nvm ls列出已安装的Node.js版本
nvm ls available查看可安装的版本(Windows)
nvm ls-remote查看可安装的版本(Mac/Linux)
nvm install <版本>安装指定版本
nvm install --lts安装最新LTS版本
nvm uninstall <版本>卸载指定版本
nvm use <版本>切换到指定版本
nvm current显示当前使用的版本
nvm alias default <版本>设置默认版本
nvm run <版本> app.js使用指定版本运行脚本

常见问题与解决方案

1. nvm命令未找到

Windows:

  • 重新安装NVM并确保系统环境变量设置正确
  • 检查Path环境变量是否包含NVM安装路径

Mac/Linux:

  • 确保配置文件(/.bashrc或/.zshrc)中包含NVM初始化代码
  • 执行source ~/.bashrc使配置生效
  • 检查NVM安装目录权限:ls -la ~/.nvm

2. npm全局安装的模块无法使用

  • 检查环境变量PathNODE_PATH是否正确设置
  • 确认全局模块安装在node_global目录下
  • Windows用户可能需要以管理员权限运行命令提示符

3. 下载Node.js速度慢

  • 确保已正确配置阿里云镜像
  • Windows用户检查settings.txt文件的镜像配置
  • Mac/Linux用户检查环境变量NVM_NODEJS_ORG_MIRRORNVM_NPM_MIRROR的设置

4. 切换版本后npm命令失效

每次安装新版本Node.js后,需要重新安装全局npm包:

nvm use <版本>
npm install -g npm  # 更新npm到最新版
# 安装其他常用全局包
npm install -g yarn rimraf serve

总结

通过本文的指南,你现在应该已经:

  1. ✅ 彻底卸载了旧版Node.js
  2. ✅ 成功安装了NVM
  3. ✅ 配置了阿里云镜像源加速下载
  4. ✅ 学会了如何安装和切换Node.js版本
  5. ✅ 自定义了node_global和node_cache目录
  6. ✅ 掌握了常用的NVM命令

使用NVM管理Node.js版本将大大提高你的开发效率,特别是在需要处理多个项目且它们依赖不同Node.js版本的情况下。

你有关于NVM的其他问题或使用技巧吗?欢迎在评论区留言分享!


相关文章:

NVM完全指南:安装、配置与最佳实践

发布于 2025年5月7日 • 阅读时间&#xff1a;10分钟 &#x1f4a1; TL;DR: 本文详细介绍了如何完整卸载旧版Node.js&#xff0c;安装NVM&#xff0c;配置阿里云镜像源&#xff0c;以及设置node_global与node_cache目录&#xff0c;打造高效Node.js开发环境。 &#x1f4cb; 目…...

(二)毛子整洁架构(CQRS/Dapper/领域事件处理器/垂直切片)

文章目录 项目地址一、Application 层1.1 定义CQRS的接口以及其他服务1. Command2. IQuery查询3. 当前时间服务接口4. 邮件发送服务接口 1.2 ReserveBooking Command1. 处理传入的参数2. ReserveBookingCommandHandler3. BookingReservedDomainEvent 1.3 Query使用Sql查询1. 创…...

基于大核感知与非膨胀卷积的SPPF改进—融合UniRepLK的YOLOv8目标检测创新架构

在当前目标检测领域中,YOLO系列模型因其优异的速度-精度平衡能力而被广泛部署于工业界与科研场景。YOLOv8作为该系列的最新版本,在主干网络与特征金字塔结构上进行了多项优化,进一步提升了其实时性与鲁棒性。然而,其核心组件—SPPF(Spatial Pyramid Pooling Fast)模块仍采用…...

基于SpringBoot网上书店的设计与实现

pom.xml配置文件 1. 项目基本信息(没什么作用) <groupId>com.spring</groupId> <!--项目组织标识&#xff0c;通常对应包结构--> <artifactId>boot</artifactId> <!--项目唯一标识--> <version>0.0.1-SNAPSHOT</ve…...

小程序多线程实战

在小程序开发中&#xff0c;由于微信小程序的运行环境限制&#xff0c;原生并不支持传统意义上的多线程编程&#xff0c;但可以通过以下两种核心方案实现类似多线程的并发处理效果&#xff0c;尤其在处理复杂计算、避免主线程阻塞时非常关键&#xff1a; 一、官方方案&#xff…...

如何修改MySQL数据库密码

文章目录 一、忘记数据库密码该如何修改1. 关闭数据库的服务2.跳过安全检查3. 重置密码4.查询用户是否存在5.退出验证密码是否正确 二、未忘记密码该如何修改密码1.直接修改密码2.登录mysql 时间久了&#xff0c;忘记数据库密码了。。。。。 一、忘记数据库密码该如何修改 1. …...

【Python】mat npy npz 文件格式

1、简介 MAT 文件和 NP&#xff08;.npy 或 .npz&#xff09;文件是两种不同的格式&#xff0c;用于存储数组数据。它们分别由 MATLAB 和 NumPy 开发&#xff0c;主要用于各自环境中的数据存储和交换。以下是这两种格式的主要区别&#xff1a; 1.1 格式和用途 MAT 文件&…...

SpringBoot快速入门WebSocket(​​JSR-356附Demo源码)

现在我想写一篇Java快速入门WebSocket,就使用 JSR-356的websocket,我想分以下几点, 1. websocket介绍, 1.1 介绍 什么是WebSocket&#xff1f;​​ WebSocket 是一种基于 ​​TCP​​ 的​​全双工通信协议​​&#xff0c;允许客户端和服务器在​​单个长连接​​上实…...

JDBC执行sql过程

1. 加载数据库驱动​ JDBC 通过 ​​驱动&#xff08;Driver&#xff09;​​ 实现与不同数据库的通信。驱动需提前加载到 JVM&#xff1a; 手动加载&#xff08;JDBC 4.0 前&#xff09;​​&#xff1a; Class.forName("com.mysql.cj.jdbc.Driver"); // MySQL 驱…...

VNC windows连接ubuntu桌面

✅ 步骤 1&#xff1a;安装 VNC 服务器 首先&#xff0c;我们需要在 Winux 系统上安装一个 VNC 服务器。这里我们使用 tigervnc 作为例子&#xff0c;它是一个常用的 VNC 服务器软件。 打开终端并更新你的软件包&#xff1a; sudo apt update安装 tigervnc 服务器&#xff1a;…...

CSS中的@import指令

一、什么是import指令&#xff1f; import 是CSS提供的一种引入外部样式表的方式&#xff0c;允许开发者在CSS文件中引入其他CSS文件&#xff0c;或者在HTML的<style>标签中引入外部样式。与常见的<link>标签相比&#xff0c;import 提供了一种更“CSS原生”的样式…...

【安装配置教程】ubuntu安装配置Kodbox

目录 一、引言 二、环境配置 1. 服务器配置​ 2. 必备组件​ 三、安装基础环境​ 1. 安装 PHP 8.1 及扩展​ 2. 安装 MySQL 数据库 3.安装 Redis&#xff08;可选&#xff0c;提升缓存性能&#xff09; 4. 配置nginx文件 4.1. 创建 Kodbox 站点目录​ 4.2. 编写 Ng…...

【软件设计师:数据库】13.数据库控制与安全

一、数据库语言SQL SQL是结构化查询语言(Structured Query Language)的缩写,其功能包括数据查询、数据操纵、数据定义和数据控制四个部分。 SQL 语言简洁、方便实用、功能齐全,已成为目前应用最广的关系数据库语言。SQL既是自含式语言(联机交互),又是嵌入式语言(宿主语…...

LabVIEW车牌自动识别系统

在智能交通快速发展的时代&#xff0c;车牌自动识别系统成为提升交通管理效率的关键技术。本案例详细介绍了基于 LabVIEW 平台&#xff0c;搭配大恒品牌相机构建的车牌自动识别系统&#xff0c;该系统在多个场景中发挥着重要作用&#xff0c;为交通管理提供了高效、精准的解决方…...

el-menu 折叠后小箭头不会消失

官方示例 <template><el-radio-group v-model"isCollapse" style"margin-bottom: 20px"><el-radio-button :value"false">expand</el-radio-button><el-radio-button :value"true">collapse</el-ra…...

c语言第一个小游戏:贪吃蛇小游戏01

hello啊大家好 今天我们用一个小游戏来增强我们的c语言&#xff01; 那就是贪吃蛇 为什么要做一个贪吃蛇小游戏呢&#xff1f; 因为这个小游戏所涉及到的知识有c语言的指针、数组、链表、函数等等可以让我们通过这个游戏来巩固c语言&#xff0c;进一步认识c语言。 一.我们先…...

6. HTML 锚点链接与页面导航

在开发长页面或文档类网站时,锚点链接(Anchor Links)是一个非常实用的功能。通过学习 HTML 锚点技术,将会掌握如何在同一页面内实现快速跳转,以及如何优化长页面的导航体验。以下是基于给定素材的学习总结和实践心得 一、什么是锚点链接? 锚点链接(也称为页面内链接)允…...

[项目总结] 抽奖系统项目技术应用总结

&#x1f338;个人主页:https://blog.csdn.net/2301_80050796?spm1000.2115.3001.5343 &#x1f3f5;️热门专栏: &#x1f9ca; Java基本语法(97平均质量分)https://blog.csdn.net/2301_80050796/category_12615970.html?spm1001.2014.3001.5482 &#x1f355; Collection与…...

Axios替代品Alova

介绍alova | Alova.JS Multipart 实体请求 | Axios中文文档 | Axios中文网 1. 极致的轻量与性能 Tree-shaking优化&#xff1a;仅打包使用到的功能模块 零依赖&#xff1a;基础包仅 4KB&#xff08;Axios 12KB&#xff09; 2. 智能请求管理&#xff08;开箱即用&#xff0…...

Python OpenCV性能优化与部署实战指南

在计算机视觉领域&#xff0c;OpenCV作为开源视觉库的标杆&#xff0c;其性能表现直接影响着从工业检测到AI模型推理的各类应用场景。本文结合最新技术趋势与生产实践&#xff0c;系统性梳理Python环境下OpenCV的性能优化策略与部署方案。 一、性能优化核心技术矩阵 1.1 内存…...

k8s的flannel生产实战与常见问题排查

关于 Kubernetes Flannel 插件的详细教程及生产环境实战指南&#xff0c;涵盖核心概念、安装配置、常见问题排查与优化策略 Flannel通信流程 一、Flannel 概述 Flannel 是 Kubernetes 最常用的 CNI&#xff08;Container Network Interface&#xff09;插件之一&#xff0c;…...

删除链表倒数第N个节点

Leetcode&#xff08;19&#xff09;&#xff1a; 给你一个链表&#xff0c;删除链表的倒数第 n 个结点&#xff0c;并且返回链表的头结点。 分析&#xff1a; 首要目标就是找到第N个节点的前一个节点&#xff0c;因为只有通过这个节点&#xff08;cur&#xff09;才可进行对…...

互联网大厂Java面试实录:Spring Boot与微服务架构在电商场景中的应用解析

&#x1f4aa;&#x1f3fb; 1. Python基础专栏&#xff0c;基础知识一网打尽&#xff0c;9.9元买不了吃亏&#xff0c;买不了上当。 Python从入门到精通 &#x1f601; 2. 毕业设计专栏&#xff0c;毕业季咱们不慌忙&#xff0c;几百款毕业设计等你选。 ❤️ 3. Python爬虫专栏…...

UGUI如何使用EventTrigger

前言 在 Unity 的 UGUI 系统中,EventTrigger 是一个强大的组件,允许开发者监听和处理多种 UI 交互事件。以下是详细的使用方法、示例代码、优缺点分析以及注意事项。 一、EventTrigger 基本用法 1. 添加 EventTrigger 组件 在 Unity 编辑器中选中 UI 对象(如 But…...

从代码学习深度学习 - 单发多框检测(SSD)PyTorch版

文章目录 前言工具函数数据处理工具 (`utils_for_data.py`)训练工具 (`utils_for_train.py`)检测相关工具 (`utils_for_detection.py`)可视化工具 (`utils_for_huitu.py`)模型类别预测层边界框预测层连接多尺度预测高和宽减半块基础网络块完整的模型训练模型读取数据集和初始化…...

机器视觉的平板电脑屏幕组件覆膜应用

在现代智能制造业中&#xff0c;平板电脑屏幕组件覆膜工序是确保产品外观和功能完整性的重要环节。随着技术的进步&#xff0c;传统的覆膜方式已经无法满足高速度、高精度的生产需求。而MasterAlign视觉系统的出现&#xff0c;将传统覆膜工艺转变为智能化、自动化的生产流程。在…...

更换内存条会影响电脑的IP地址吗?——全面解析

在日常电脑维护和升级过程中&#xff0c;许多用户都会遇到需要更换内存条的情况。与此同时&#xff0c;不少用户也担心硬件更换是否会影响电脑的网络配置&#xff0c;特别是IP地址的设置。本文将详细探讨更换内存条与IP地址之间的关系&#xff0c;帮助读者理解这两者之间的本质…...

SQLite数据库加密(Java语言、python语言)

1. 背景与需求 SQLite 是一种轻量级的关系型数据库,广泛应用于嵌入式设备、移动应用、桌面应用等场景。为了保护数据的隐私与安全,SQLite 提供了加密功能(通过 SQLCipher 扩展)。在 Java 中,可以使用 sqlite-jdbc 驱动与 SQLCipher 集成来实现 SQLite 数据库的加密。 本…...

RISC-V入门资料

以下是获取 RISC-V 相关资料的权威渠道和推荐资源&#xff0c;涵盖技术文档、开发工具、社区支持等&#xff1a; 1. 官方资料 RISC-V 国际基金会官网 https://riscv.org 核心文档&#xff1a;ISA 规范&#xff08;包括基础指令集&#xff08;RV32I/RV64I&#xff09;、扩展指令…...

C++访问权限控制符

访问权限控制符 在C中&#xff0c;访问权限控制符是用来限制类或结构体成员&#xff08;例如&#xff1a;变量、函数等&#xff09;的访问级别的。C提供了三种访问权限级别&#xff1a; Public 访问权限&#xff1a; 公共成员可以在任何地方被访问&#xff0c;包括类的内部、…...