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

news/2024/9/18 13:34:57/ 标签: node.js, macos, windows, nvm

在这里插入图片描述

🔥 个人主页:空白诗

在这里插入图片描述

文章目录

    • 一、引言
    • 二、nvm的安装与基本使用
      • 2.1 macOS安装nvm
        • 2.1.1 使用 `curl` 安装
        • 2.1.2 使用 Homebrew 安装
      • 2.2 Windows安装nvm
      • 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_30">二、nvm的安装与基本使用

nvm_32">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
    

nvm_98">2.2 Windows安装nvm

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

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

nvmwindows_105">2.2.1 下载 nvm-windows

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

在这里插入图片描述

nvmwindows_112">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. 重新启动终端

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

nvm_201">问题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进行版本管理。希望这些信息对您的开发工作有所帮助!


http://www.ppmy.cn/news/1525187.html

相关文章

graphQL 参数使用报错问题

query{getMembers(sid:0,nodeId:"ns6;i7896"){methods} } //报错 "message": "Field \"methods\" of type \"[UaMethod]\" must have a selection of subfields. Did you mean \"methods { ... }\"?",这个错误信…

观众登记2025中国(深圳)国际智能手机供应链展览会

时间:2024年4月9-11日 地点:深圳会展中心 ◆展会背景background: 近年来,国内手机品牌在全球市场上的影响力不断增强,华为、OPPO、VIVO和小米等…

实战案例(2)防火墙+二交换机VLAN组网

案例二:防火墙充当三层交换机与路由器角色功能进行组网 拿到这样的拓扑后,首先要了解好客户的需求,然后根据需求进行划分 比如客户那边有监控跟办公网络,可以通过VLAN划分不同的区域,然后二层交换机对接终端的口划入到…

Spring Boot属性注入的多种方式!

Spring Boot的一个问题,证明你是不是真正的 "会用" Spring boot ?Spring Boot的一个问题,直接暴露你是不是真正使用Spring Boothttps://mp.weixin.qq.com/s?__bizMzkzMTY0Mjc0Ng&mid2247484040&idx1&sn64ad15d95e44c874cc890973…

国产服务器CPU发展分析

CPU行业概览:信创带动服务器CPU国产化 目前CPU行业由两大生态体系主导:一是基于X86指令系统和Windows操作系统的Wintel体系,主要用于服务器与电脑等;二是基于ARM指令系统和Android操作系统的AA体系,主要用于移动设备…

机器学习和深度学习存在显著区别

机器学习和深度学习在多个方面存在显著的区别,以下是对这些区别的详细阐述: 定义与起源 机器学习:是人工智能的一个分支领域,它使计算机能够从数据中学习并改进其性能,而无需进行显式编程。机器学习起源于20世纪50年代…

认识原码反码补码

目录 一.何为原码反码和补码? (1)原码 (2)反码 (3)补码 (4)总结 二.原反补之间的简单计算 (1)补码加法 (2) 补码减法 (3) 溢出问题 一.何为原码反码和补码? (1)原码 原码:直接将数值按照正负数的形式翻译成⼆进制得到的就是原码。 符号位:最高位&#xf…

uniapp数据缓存和发起网络请求

数据缓存 uni.onStorageSync同步的方式将数据存储到本地缓存 <template><button click"onStorageSync()">存储数据</button> </template><script setup>const onStorageSync () > {// 存储数据uni.setStorageSync(username, 张三)…

Python——爬虫(2)

要使用Python爬取B站热门视频&#xff0c;可以使用第三方库requests和BeautifulSoup来实现。 首先&#xff0c;你需要安装这两个库。你可以使用以下命令在终端或命令提示符中安装它们&#xff1a; pip install requests beautifulsoup4接下来&#xff0c;你可以使用以下代码来…

使用Astra DB和LangChain构建高效的RAG系统:从入门到实践

使用Astra DB和LangChain构建高效的RAG系统&#xff1a;从入门到实践 1. 引言 检索增强生成&#xff08;Retrieval-Augmented Generation&#xff0c;简称RAG&#xff09;是一种结合了信息检索和文本生成的AI技术&#xff0c;能够显著提升大语言模型的表现。本文将介绍如何使…

React Native 0.76版本发布

关于 React Native 的 New Architecture 概念&#xff0c;最早应该是从 2018 年 RN 团队决定重写大量底层实现开始&#xff0c;因为那时候 React Native 面临各种结构问题和性能瓶颈&#xff0c;最终迫使 RN 团队开始进行重构。 而从 React Native 0.68 开始&#xff0c;New A…

buildroot移植qt报错Info: creating stash file (补充qt添加字库)

移植qt库&#xff0c;编译文件报错Info: creating stash file /home/rbing/QT/uart/.qmake.stash Project ERROR: Unknown module(s) in QT: serialport rbingouc:~/QT/uart$ /home/rbing/linux/tool/buildroot-2022.02.9/output/host/usr/bin/qmake Info: creating stash fil…

ssm“健康早知道”微信小程序 LW PPT源码调试讲解

第二章开发技术与环境配置 以Java语言为开发工具&#xff0c;利用了当前先进的SSM框架&#xff0c;以MyEclipse10为系统开发工具&#xff0c;MySQL为后台数据库&#xff0c;开发的一个“健康早知道”微信小程序。 2.1 Java语言简介 Java是由SUN公司推出&#xff0c;该公司于2…

梧桐数据库(WuTongDB):数据库技术中都有哪些常见的优化器

以下是一些常见的数据库优化器&#xff1a; 1. CBO&#xff08;Cost-Based Optimizer&#xff09; 应用场景&#xff1a;广泛应用于关系型数据库中&#xff0c;如Oracle、PostgreSQL、MySQL等。工作原理&#xff1a;通过计算不同执行计划的代价&#xff08;如CPU、I/O等资源消…

RabbitMQ延迟消息——DelayExchange插件

什么是死信以及死信交换机 当一个队列中的消息满足下列情况之一时&#xff0c;可以成为死信&#xff1a; 1. 消费者使用basic.reject或 basic.nack声明消费失败&#xff0c;并且消息的requeue参数设置为false 2. 消息是一个过期消息&#xff0c;超时无人消费 3. 要投递的队列消…

美国洛杉矶ip有哪些独特优势

美国洛杉矶的IP地址独特优势主要体现在以下几个方面&#xff0c;rak小编为您整理发布美国洛杉矶的IP地址独特优势&#xff0c;希望 对您选择服务器有帮助。 1. 丰富的IP资源&#xff1a;美国洛杉矶多IP服务器提供的IP数量从几十到几百不等&#xff0c;最多可提供多达511个独立I…

使用Django 搭建自动化平台

由于本人python 环境已安装&#xff0c;就不重复安装了&#xff0c;博客中有python的安装说明&#xff1b; 1 Django 的安装 安装很简单&#xff1a; pip install django 但是国内的网络环境&#xff0c;你很难成功&#xff0c;此处省略一些字。。。。。 问题总要解决&#…

QT QObject源码学习(二)

一、全局函数 1、qt_qFindChildren_helper函数 在给定的父对象下&#xff0c;查找所有匹配指定条件的子对象&#xff0c;并将它们添加到一个列表中。 &#xff08;1&#xff09;声明 /*** brief 在给定的父对象下&#xff0c;查找所有匹配指定条件的子对象&#xff0c;并将它…

Leetcode3275. 第 K 近障碍物查询

Every day a Leetcode 题目来源&#xff1a;3275. 第 K 近障碍物查询 解法1&#xff1a;大根堆 维护前 k 小元素&#xff0c;可以用最大堆。 遍历数组 queries&#xff0c;计算点 (x,y) 到原点的曼哈顿距离 d∣x∣∣y∣。 把 d 入堆&#xff0c;如果堆大小超过 k&#xff…

clickhouse 保证幂等性

在分布式数据库系统 ClickHouse 中&#xff0c;幂等性通常涉及到在相同的操作被重复执行时&#xff0c;保证结果不会因为多次执行而发生变化。为了确保幂等性&#xff0c;ClickHouse 采用了一些机制来避免数据重复插入或处理。 以下是 ClickHouse 保证幂等性的一些关键机制&am…