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

使用 nvm 管理 node 版本:如何在 macOS 和 Windows 上安装使用nvm

在这里插入图片描述

🔥 个人主页:空白诗

在这里插入图片描述

文章目录

    • 一、引言
    • 二、nvm的安装与基本使用
      • 2.1 macOS安装nvm
        • 2.1.1 使用 `curl` 安装
        • 2.1.2 使用 Homebrew 安装
      • 2.2 Windows安装nvm
        • 2.2.1 下载 nvm-windows
        • 2.2.2 安装 nvm-windows
      • 2.3 安装node
      • 2.4 切换node版本
    • 三、常见问题及解决方案
      • 问题1:关闭终端后找不到node
      • 问题2:nvm命令找不到
      • 问题3:无法安装特定版本的node
    • 四、总结


在这里插入图片描述

一、引言

在开发 JavaScript 应用时,node 是一个重要的运行环境,而 nvm(Node Version Manager)是管理node版本的利器。

nvm允许我们在同一台计算机上安装和切换多个node版本,极大地提高了开发效率和灵活性。

尽管nvm功能强大,但在使用过程中可能会遇到一些问题和坑。本文将介绍nvm的基本使用方法,并解决一些常见的问题,例如安装node后,使用nvm切换版本成功,但关闭终端后无法找到node的问题等等。


二、nvm的安装与基本使用

2.1 macOS安装nvm

在macOS上,您可以通过以下两种主要方式来安装nvm:使用curlHomebrew

2.1.1 使用 curl 安装

打开终端,运行以下命令下载并安装nvm:

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

安装完成后,您需要加载nvm的环境变量。在终端中运行以下命令:

source ~/.nvm/nvm.sh

将这行命令添加到您的shell启动脚本中(例如~/.bash_profile~/.bashrc~/.zshrc),以便每次启动终端时自动加载nvm:

export NVM_DIR="$HOME/.nvm"
[ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh"  # This loads nvm
2.1.2 使用 Homebrew 安装

如果您更喜欢使用Homebrew,可以按以下步骤操作:

  1. 安装 Homebrew(如果尚未安装)

    打开终端,输入以下命令来安装Homebrew(如果您尚未安装它):

    /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
    
  2. 安装 nvm

    使用Homebrew安装nvm:

    brew install nvm
    
  3. 配置环境变量

    Homebrew安装nvm后,您需要将nvm的环境变量添加到您的shell启动脚本中(例如~/.bash_profile~/.bashrc~/.zshrc)。在文件末尾添加以下内容:

    export NVM_DIR="$HOME/.nvm"
    [ -s "$(brew --prefix nvm)/nvm.sh" ] && \. "$(brew --prefix nvm)/nvm.sh"  # This loads nvm
    

    运行以下命令以使更改生效:

    source ~/.bash_profile
    

    或者,对于使用zsh的用户:

    source ~/.zshrc
    

2.2 Windows安装nvm

在Windows上,您可以使用nvm-windows来安装和管理node版本。nvm-windows是nvm的Windows版本,功能类似于macOS和Linux上的nvm。

注意:如果你已经安装了 node ,你需要卸载它,这样在使用不同版本的 node 和从 NPM 注册表安装包时不会导致错误。

2.2.1 下载 nvm-windows

访问nvm-windows的GitHub发布页面,下载最新版本的nvm-setup.exe文件。

在这里插入图片描述

2.2.2 安装 nvm-windows

运行nvm-setup.exe安装程序。安装过程中,您可以选择nvm的安装路径和node的存储路径。

在这里插入图片描述

配置环境变量

安装完成后,nvm-windows会自动配置环境变量。您可以在命令提示符或PowerShell中使用nvm命令。

2.3 安装node

使用nvm安装特定版本的node,例如:

nvm install 18

2.4 切换node版本

安装完毕后,可以使用nvm use命令切换到指定版本:

nvm use 18

验证当前node版本:

node -v

三、常见问题及解决方案

问题1:关闭终端后找不到node

您可能会遇到在终端中使用nvm use 18成功切换到node 18版本,但关闭终端后,再次打开终端时,node版本回到了系统默认的版本,或者node命令找不到。

这个问题通常是由于nvm的环境变量没有正确加载造成的。解决方案如下:

  1. 设置默认版本

    使用 nvm alias default 命令来指定一个默认的node版本。例如,如果您希望每次打开终端时都使用node 18版本,可以运行以下命令:

    nvm alias default 18
    

    这会将node 18设置为nvm的默认版本。

  2. 检查nvm配置

    确保nvm的环境配置在用户的shell启动脚本中。例如,对于bash用户,配置通常在~/.bashrc文件中;对于zsh用户,配置通常在~/.zshrc文件中。您需要确认以下内容存在于您的启动脚本中:

    export NVM_DIR="$HOME/.nvm"
    [ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh"  # This loads nvm
    

    对于bash用户,添加完后,可以运行:

    source ~/.bashrc
    

    对于zsh用户,添加完后,可以运行:

    source ~/.zshrc
    
  3. 确认nvm脚本路径

    确保nvm的脚本路径设置正确,并且在您的环境变量中。

    export PATH="$HOME/.nvm/bin:$PATH"
    
  4. 重新启动终端

    有时,简单的重新启动终端可以解决问题,确保配置文件的更改已生效。

问题2:nvm命令找不到

在终端中使用nvm命令时,系统提示nvm: command not found

这个问题可能是由于nvm没有正确安装或环境变量没有正确设置。请按以下步骤检查并修复:

  1. 检查安装

    确保nvm已安装在预期的位置。默认情况下,它应安装在用户主目录的.nvm文件夹中。

  2. 检查环境变量

    确保nvm的环境变量在启动脚本中设置正确。请参阅上面“检查nvm配置”部分,确保相应的配置已添加到您的~/.bash_profile~/.bashrc~/.zshrc中。

  3. 重新安装nvm

    如果以上步骤无法解决问题,尝试重新安装nvm。首先删除现有安装:

    rm -rf ~/.nvm
    

    然后按照官方文档重新安装nvm。

问题3:无法安装特定版本的node

使用nvm install安装node版本时,出现错误或安装失败。

  1. 检查nvm版本

    确保使用的nvm版本是最新的。更新nvm可以解决一些兼容性问题:

    nvm install --lts
    
  2. 检查网络连接

    有时,网络问题可能导致下载失败。确保您的网络连接稳定,并尝试重新安装。

  3. 查看错误信息

    阅读错误信息并根据提示进行故障排除。常见问题包括权限问题或依赖包缺失等。


四、总结

nvm是一个强大的工具,可以帮助您轻松管理和切换不同版本的node。

在使用nvm时,了解一些常见问题及其解决方案,将有助于提高开发效率并减少不必要的麻烦。

通过本文的介绍,您应该能够解决大部分与nvm相关的问题,并顺利地在项目中使用nvm进行版本管理。希望这些信息对您的开发工作有所帮助!

相关文章:

使用 nvm 管理 node 版本:如何在 macOS 和 Windows 上安装使用nvm

🔥 个人主页:空白诗 文章目录 一、引言二、nvm的安装与基本使用2.1 macOS安装nvm2.1.1 使用 curl 安装2.1.2 使用 Homebrew 安装 2.2 Windows安装nvm2.2.1 下载 nvm-windows2.2.2 安装 nvm-windows 2.3 安装node2.4 切换node版本 三、常见问题及解决方案…...

【项目开发 | Python】基于“羊了个羊“风格的消除类小游戏

原创文章,不得转载。 目标:使用 Python 开发"羊了个羊"风格的消除类小游戏,合理运用 AIGC 工具提高开发效率;使用文生图工具实现图片设计等工作。 文章目录 项目背景项目介绍+项目展示游戏逻辑概述主界面游戏界面获胜界面失败界面附加功能项目细节项目测试测试样…...

云服务器使用

最近搭建一个内网穿透工具,推荐一个云服务器: 三丰台:https://www.sanfengyun.com/ 作为学生党这个服务器是免费的可以体验使用!可以使用免费虚拟主机和云服务器,写一个申请的基本步骤方便大家构建 申请步骤&#x…...

sqli-lab靶场学习(四)——Less11-14(post方法)

前言 第1-10关都是get方法,本关开始进入post方法。其实post也好get也好,本质都差不多,使用的技巧也基本相同。 Less11 第11关打开是一个输入用户名密码的界面 显然登陆对话框会使用post方式提交,这里我们尝试在Username一栏通过…...

GBDT算法原理及其公式推导过程

GBDT(Gradient Boosting Decision Tree,梯度提升决策树)是一种集成学习方法,主要用于回归和分类任务。它的基本思想是通过迭代地构建一系列弱学习器(通常是决策树),并将这些弱学习器组合成一个强…...

网络:UDP协议

个人主页 : 个人主页 个人专栏 : 《数据结构》 《C语言》《C》《Linux》 文章目录 前言UDP协议报头和有效载荷分离的问题有效载荷向上交付的问题,也就是交给哪个进程?怎么确定把报文收全了?UDP报头是如何封装的呢&…...

linux与unix

不同点 1开源性 linux是开源的,unix是闭源的 2跨平台性 linux具有很好的跨平台性,可以运行在多种硬件平台 unix大多需要与指定硬件配套使用 3相关操作 linux既可以进行命令行操作,也可以进行图形化的操作 unix只是命令行下的操作 4对…...

计算机网络29——Linux基本命令vim,gcc编译命令

1、创建新用户 2、给用户设置密码 3、切换到新用户 切换到root用户 4、删除用户 5、查看ip 6、ping 查看物理上两台主机是否联通 7、netstatus 8、nslookup 查看网址的地址 9、负载均衡与容灾备份 负载均衡:指将负载(工作任务)进行平衡、分…...

uniapp离线(本地)打包

安卓离线打包 注意:jdk建议选择1.8 下载Android Studio配置gradle仓库地址 第一步:先下载对应的版本,进行压缩包解压 第二步:在电脑磁盘(D盘),创建文件夹存放压缩包并进行解压,并创…...

如何编写一个爬虫以实时获取某平台商品价格

编写一个爬虫来实时获取某个平台的商品价格是一项实用的任务,可以帮助用户了解市场动态或监控价格变化。以下是一个简单的爬虫示例,使用 Python 的 requests 和 BeautifulSoup 库来抓取商品价格。为了演示,我将以一个假设的电商网站为例&…...

声网SDK脚本运行错误

文章目录 运行步骤无法运行.bat电脑出现警告--更改执行策略若无出现-更新power shell搜索最新版本的 PowerShell安装新版本 仍无法解决-手动下载第三方库 2024-9-9运行步骤 无法运行.bat 电脑出现警告–更改执行策略 若无出现-更新power shell 搜索最新版本的 PowerShell 在…...

Docker + Win 10 学习记录

下载Docker Release notes | Docker Docs 推荐使用4.33版本,最新的Docker版本在win10 22H2无法安装。需要升级到win11. 查看Win10版本是否与最新版的Docker兼容 运行 win R, 然后输入winver 如果你的Docker版本无法在当前的win10安装,请更…...

GlusterFS分布式存储

目录 一、GlusterFS分布式存储概述 1、GFS概念 2、GFS特点 3、GFS术语 4、GFS架构 5、GFS工作流程 6、GlusterFs的卷类型 6.1、 分布式卷(Distributed Volume) 6.2、条带卷(Striped Volume) 6.3、复制卷(Rep…...

ARM/Linux嵌入式面经(三八):绿盟科技

文章目录 @[toc]堆和栈是怎么实现的?基本概念实现方式栈的实现堆的实现面试官的追问堆和栈的运用是怎样运用的、怎样存储的?回答栈(Stack)堆(Heap)深度对比面试官可能的追问Linux系统中进程与进程之间的通信方式有哪些?1. 管道(Pipe)2. 共享内存(Shared Memory)3. 消…...

C#的数据类型转换

目录 C#的数据类型转换 1.隐式转换 2.显式转换 3.Convert类 4.字符串解析 本篇文章来分享一下C#的数据类型转换,主要包括四种方法:隐式转换、显式转换、Convert类、字符串解析。 C#的数据类型转换 1.隐式转换 隐式转换是在不丢失数据的情况下由编译…...

Oracle重做日志文件的添加及删除

在Oracle数据库中,添加和删除日志组文件是数据库维护中的常见操作,它们对于数据库的恢复能力和性能都有重要影响。以下是关于如何在Oracle中添加和删除日志组文件的详细步骤: 一、添加日志组文件 添加日志组文件是为了增加数据库的冗余度和…...

JavaWeb学习

文章目录 学习路线MavenMaven 坐标依赖管理生命周期 1. Web入门HTTP协议Tomcat 2. 请求响应- 请求1. 简单参数2. 实体参数3. 数组集合参数4. 日期参数5.Json参数6.路径参数- 响应响应数据 3.分层解耦三层架构分层解耦IOC & DI入门IOC详解DI详解 4. MySQL数据库设计1. MySQL…...

云原生信息安全:筑牢数字化时代的安全防线

云原生信息安全:筑牢数字化时代的安全防线 一、云原生信息安全概述 云原生安全包含两层重要含义。一方面,面向云原生环境的安全,目标是防护云原生环境中的基础设施、编排系统和微服务等系统的安全。在云原生内部,安全机制多以云原…...

双击就可以打开vue项目,而不用npm run dev

右键点击桌面或其他位置,选择“新建” -> “快捷方式”,在“对象的位置”处直接输入“npm run dev”,然后下一步 自定义一个快捷方式名称 完成后,桌面会创建一个快捷方式,右键快捷方式选择属性,可以看…...

大数据时代的等保测评:数据安全与隐私保护

在大数据时代,等保测评(信息安全等级保护测评)对于数据安全与隐私保护具有至关重要的意义。随着大数据技术的飞速发展,数据已成为企业最宝贵的资产之一,但同时也带来了前所未有的安全挑战。以下是对大数据时代等保测评…...

利用ngx_stream_return_module构建简易 TCP/UDP 响应网关

一、模块概述 ngx_stream_return_module 提供了一个极简的指令&#xff1a; return <value>;在收到客户端连接后&#xff0c;立即将 <value> 写回并关闭连接。<value> 支持内嵌文本和内置变量&#xff08;如 $time_iso8601、$remote_addr 等&#xff09;&a…...

3.3.1_1 检错编码(奇偶校验码)

从这节课开始&#xff0c;我们会探讨数据链路层的差错控制功能&#xff0c;差错控制功能的主要目标是要发现并且解决一个帧内部的位错误&#xff0c;我们需要使用特殊的编码技术去发现帧内部的位错误&#xff0c;当我们发现位错误之后&#xff0c;通常来说有两种解决方案。第一…...

关于iview组件中使用 table , 绑定序号分页后序号从1开始的解决方案

问题描述&#xff1a;iview使用table 中type: "index",分页之后 &#xff0c;索引还是从1开始&#xff0c;试过绑定后台返回数据的id, 这种方法可行&#xff0c;就是后台返回数据的每个页面id都不完全是按照从1开始的升序&#xff0c;因此百度了下&#xff0c;找到了…...

高等数学(下)题型笔记(八)空间解析几何与向量代数

目录 0 前言 1 向量的点乘 1.1 基本公式 1.2 例题 2 向量的叉乘 2.1 基础知识 2.2 例题 3 空间平面方程 3.1 基础知识 3.2 例题 4 空间直线方程 4.1 基础知识 4.2 例题 5 旋转曲面及其方程 5.1 基础知识 5.2 例题 6 空间曲面的法线与切平面 6.1 基础知识 6.2…...

2025 后端自学UNIAPP【项目实战:旅游项目】6、我的收藏页面

代码框架视图 1、先添加一个获取收藏景点的列表请求 【在文件my_api.js文件中添加】 // 引入公共的请求封装 import http from ./my_http.js// 登录接口&#xff08;适配服务端返回 Token&#xff09; export const login async (code, avatar) > {const res await http…...

leetcodeSQL解题:3564. 季节性销售分析

leetcodeSQL解题&#xff1a;3564. 季节性销售分析 题目&#xff1a; 表&#xff1a;sales ---------------------- | Column Name | Type | ---------------------- | sale_id | int | | product_id | int | | sale_date | date | | quantity | int | | price | decimal | -…...

select、poll、epoll 与 Reactor 模式

在高并发网络编程领域&#xff0c;高效处理大量连接和 I/O 事件是系统性能的关键。select、poll、epoll 作为 I/O 多路复用技术的代表&#xff0c;以及基于它们实现的 Reactor 模式&#xff0c;为开发者提供了强大的工具。本文将深入探讨这些技术的底层原理、优缺点。​ 一、I…...

代理篇12|深入理解 Vite中的Proxy接口代理配置

在前端开发中,常常会遇到 跨域请求接口 的情况。为了解决这个问题,Vite 和 Webpack 都提供了 proxy 代理功能,用于将本地开发请求转发到后端服务器。 什么是代理(proxy)? 代理是在开发过程中,前端项目通过开发服务器,将指定的请求“转发”到真实的后端服务器,从而绕…...

C# 求圆面积的程序(Program to find area of a circle)

给定半径r&#xff0c;求圆的面积。圆的面积应精确到小数点后5位。 例子&#xff1a; 输入&#xff1a;r 5 输出&#xff1a;78.53982 解释&#xff1a;由于面积 PI * r * r 3.14159265358979323846 * 5 * 5 78.53982&#xff0c;因为我们只保留小数点后 5 位数字。 输…...

AGain DB和倍数增益的关系

我在设置一款索尼CMOS芯片时&#xff0c;Again增益0db变化为6DB&#xff0c;画面的变化只有2倍DN的增益&#xff0c;比如10变为20。 这与dB和线性增益的关系以及传感器处理流程有关。以下是具体原因分析&#xff1a; 1. dB与线性增益的换算关系 6dB对应的理论线性增益应为&…...