Node问题:如何正确安装nvm?Mac和Win双教程!

news2024/11/28 23:45:32

前端功能问题系列文章,点击上方合集↑

序言

大家好,我是大澈!

本文约1700+字,整篇阅读大约需要3分钟。

本文主要内容分三部分,第一部分是需求分析,第二部分是实现步骤,第三部分是问题详解。

如果您只需要解决问题,请阅读第一、二部分即可。

如果您有更多时间,进一步学习问题相关知识点,请阅读至第三部分。

1. 需求分析

为维护多个Vue2和Vue3项目,需要频繁切换node的版本,以保证项目正常运行。

所以需要一个node版本控制工具,即nvm,来灵活切换版本,以解决手动维护不同版本的复杂问题。

实现前有必要提一下,本文第二部分是安装教程,第三部分是nvm使用教程,为节省朋友们的时间,请自行选择阅读。

图片

2. 实现步骤

2.1 Mac安装nvm

打开命令行窗口,先卸载之前下载过的node,防止冲突。

sudo rm -rf /usr/local/{bin/{node,npm},lib/node_modules/npm,lib/node,share/man/*/node.*}

安装nvm。如果安装速度过于慢,推荐直接使用梯子工具ClashX

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

正常情况下,安装完成后,会自动在全局配置文件中配置好相应的环境变量。此时,可以使用 nvm -v 命令进行验证,如果没有显示nvm版本号,则请继续向下看。

图片

手动配置环境变量,先进入并打开.bash_profile配置文件。

cd ~
vim .bash_profile

然后将下面的配置信息复制粘贴进去,完成输入之后,再在英文输入法下,直接输入 :wq保存并退出编辑。

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

刷新配置信息,并关闭命令行窗口重新打开。

source ~/.bash_profile

此时,可以再次使用 nvm -v 命令进行验证,如果没有显示nvm版本号,则请继续向下看。

继续手动配置环境变量,先进入并打开.zshrc配置文件。

vim ~/.zshrc

然后将下面的配置信息复制粘贴进去,完成输入之后,再在英文输入法下,直接输入 :wq保存并退出编辑。

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

刷新配置信息,并关闭命令行窗口重新打开。

source ~/.zshrc

此时,可以再次使用 nvm -v 命令进行验证,成功显示nvm版本号。

至此,Mac下nvm完美运行。

2.2 Windows安装nvm

先卸载之前下载过的node,防止冲突。

按如下步骤卸载:卸载程序、找到环境变量中node路径下的安装文件夹并删除、删除环境变量中的node路径。

图片

图片

图片

以管理员身份运行命令行窗口,输入 node -v 确认一下,如果显示node不是内部或外部命令,则表示成功删除node,此时关闭命令行窗口即可。

图片

下载nvm。安装包下载地址:https://github.com/coreybutler/nvm-windows/releases,下载nvm-setup.zip安装包。如果进不去网站,推荐直接使用梯子工具ClashX

图片

安装nvm。安装包下载完成后打开,按照提示安装即可。

值得一提的是,一定要注意nvm和node的安装路径,可以自定义路径,但一定要记住nvm和node的安装路径,后面配置环境变量时会使用。

图片

图片

安装完成后,以管理员身份运行命令行窗口,输入nvm -v,显示版本号,则表示安装成功。如果未显示版本号,则关闭命令行窗口,继续向下看。

图片

配置环境变量。

先在系统变量中新建两个变量,NVM_HOME变量值填写nvm安装地址,NVM_SYMLINK变量值填写node安装地址。

然后在Path变量中,新建两个值,%NVM_HOME%%NVM_SYMLINK%

最后,确定保存环境变量。再次以管理员身份运行命令行窗口,输入nvm -v,显示版本号,则表示安装成功。

图片

图片

3. 问题详解

3.1 nvm使用总结

先把常用的命令放出来:

nvm off                     // 禁用node.js版本管理(不卸载任何东西)
nvm on                      // 启用node.js版本管理
nvm install <version>       // 安装node.js的命名 version是版本号 例如:nvm install 8.12.0
nvm uninstall <version>     // 卸载node.js是的命令,卸载指定版本的nodejs,当安装失败时卸载使用
nvm ls                      // 显示所有安装的node.js版本
nvm list available          // 显示可以安装的所有node.js的版本
nvm use <version>           // 切换到使用指定的nodejs版本
nvm v                       // 显示nvm版本
nvm install stable          // 安装最新稳定版

然后就是使用,大体步骤是:以管理员身份运行命令行窗口,先查看所有安装的node版本,如果列表中有需要的node版本,则直接切换使用,如果没有,则需要先安装指定版本的node,再切换使用。

图片

结语

建立这个平台的初衷:

  • 打造一个仅包含前端问题的问答平台,让大家高效搜索处理同样问题。

  • 通过不断积累问题,一起练习逻辑思维,并顺便学习相关的知识点。

  • 遇到难题,遇到有共鸣的问题,一起讨论,一起沉淀,一起成长。

感谢关注微信公众号:“程序员大澈”,然后加入问答群,让我们一起解决实现所有BUG!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1174801.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

为什么有了MAC地址,还需要IP地址?

解释 搞懂这个问题&#xff0c;首先需要了解交换机的功能 交换机内部有一张MAC地址映射表&#xff0c;记录着MAC地址和端口的对应关系。 如果A要给B发送一个数据包&#xff0c;构造如下格式的数据结构&#xff1a; 到达交换机时&#xff0c;交换机内部通过自己维护的 MAC 地…

ConcurrentHashMap是如何实现线程安全的

目录 原理&#xff1a; 初始化数据结构时的线程安全 put 操作时的线程安全 原理&#xff1a; 多段锁cassynchronize 初始化数据结构时的线程安全 在 JDK 1.8 中&#xff0c;初始化 ConcurrentHashMap 的时候这个 Node[] 数组是还未初始化的&#xff0c;会等到第一次 put() 方…

常见面试题-MySQL专栏(三)MVCC、BufferPool

typora-copy-images-to: imgs 了解 MVCC 吗&#xff1f; 答&#xff1a; MVCC&#xff08;Multi-Version Concurrency Control&#xff09; 是用来保证 MySQL 的事务隔离性的&#xff0c;对一行数据的读和写两个操作默认是不会通过加锁互斥来保证隔离性&#xff0c;避免了频…

【Mybatis小白从0到90%精讲】07:Mybatis 传递参数方式详解

文章目录 前言一、序号传参二、@Param注解传参三、对象传参单个参数多个参数四、万能Map传参单个参数多个参数总结前言 Mybatis传递参数的方式,或者说 获取参数的方式,非常灵活,支持多种方式,所以为了彻底搞懂,今天我们来总结一下Mybatis传参方式! 一、序号传参 Mapper接…

老电脑升级内存、固态硬盘、重新装机过程记录

基础环境&#xff1a; 电脑型号&#xff1a;联想XiaoXin700-15ISK系统版本&#xff1a;Windows10 家庭中文版 版本22H2内存&#xff1a;硬盘&#xff1a; 升级想法&#xff1a; 内存升级&#xff0c;固态硬盘升级&#xff0c;系统重装&#xff08;干净一点&#xff09; 升级内存…

c++类和对象(八) static成员 友元

1.1 概念 声明为static的类成员称为类的静态成员&#xff0c;用static修饰的成员变量&#xff0c;称之为静态成员变量&#xff1b;用static修饰的成员函数&#xff0c;称之为静态成员函数。静态成员变量一定要在类外进行初始化。 面试题&#xff1a;实现一个类&#xff0c;计算…

Leetcode—187.重复的DNA序列【中等】

2023每日刷题&#xff08;二十&#xff09; Leetcode—187.重复的DNA序列 实现代码 class Solution { public:const int L 10;vector<string> findRepeatedDnaSequences(string s) {unordered_map<string, int> str;vector<string> ans;int len s.size()…

第 370 场 LeetCode 周赛题解

A 找到冠军 I 枚举求强于其他所有队的队 class Solution { public:int findChampion(vector<vector<int>> &grid) {int n grid.size();int res 0;for (int i 0; i < n; i) {int t 0;for (int j 0; j < n; j)if (j ! i)t grid[i][j];if (t n - 1) …

Linux环境基础开发工具使用(二)

&#x1f4d8;北尘_&#xff1a;个人主页 &#x1f30e;个人专栏:《Linux操作系统》《经典算法试题 》《C》 《数据结构与算法》 ☀️走在路上&#xff0c;不忘来时的初心 文章目录 一、Linux项目自动化构建工具-make/Makefile1、背景2、实例代码3、依赖关系4、依赖方法5、原理…

精品基于Python的图书借阅归还管控系统

《[含文档PPT源码等]精品基于Python的图书管控系统》该项目含有源码、文档、PPT、配套开发软件、软件安装教程、项目发布教程、包运行成功&#xff01; 软件开发环境及开发工具&#xff1a; 开发语言&#xff1a;python 使用框架&#xff1a;Django 前端技术&#xff1a;Ja…

从NetSuite Payment Link杂谈财务自动化、数字化转型

最近在进行信息化的理论学习&#xff0c;让我有机会跳开软件功能&#xff0c;用更加宏大的视野&#xff0c;来审视我们在哪里&#xff0c;我们要到哪去。 在过去20多年&#xff0c;我们的财务软件经历了电算化、网络化、目前处于自动化、智能化阶段。从NetSuite这几年的功能发…

理解 fopen的 rwa r+w+a+ 参数含义

tags: C categories: C 理解 一图胜千言 我愿称之为最强 c - Difference between r and w in fopen() - Stack Overflow; 需要注意里面的a和 a, 区别在于 a 不可以读而 a可以读. c - Difference between r and w in fopen() - Stack Overflow; ModeReadWriteCreate New Fil…

【Java基础】内部类

一、什么是内部类 在一个类的里面&#xff0c;再定义一个类。&#xff08;在一个类的内部定义的类&#xff0c;称为内部类&#xff09; 举例:在A类的内部定义B类&#xff0c;B类就被称为内部类 二、内部类的访问特点 1.内部类可以直接访问外部类的成员&#xff0c;包括…

数据处理中的中心化

数据处理中的中心化&#xff0c;就是将原数据减去平均值&#xff0c;得到新的数据&#xff0c;新的数据的平均值为0。 假设原数据是x&#xff08;x可以是多维的&#xff09;&#xff0c;其平均值是&#xff0c;新的数据&#xff0c;那么新数据的平均值是为0的。下面证明下&…

[LeetCode] 2.两数相加

一、题目描述 给你两个 非空 的链表&#xff0c;表示两个非负的整数。它们每位数字都是按照 逆序 的方式存储的&#xff0c;并且每个节点只能存储 一位 数字。 请你将两个数相加&#xff0c;并以相同形式返回一个表示和的链表。 你可以假设除了数字 0 之外&#xff0c;这两个…

网络编程 - HTTP协议

目录 HTTP协议格式 一&#xff0c;请求格式 1.1 URL的基本格式 1.2 方法(method) 1.3 请求头header 二&#xff0c;响应格式 2.1 状态码 HTTP协议格式 HTTP协议与之前讲的TCP/IP协议不同&#xff0c;HTTP协议要分为两个部分——请求和响应&#xff0c;也就是一种"一…

过了面试,后面的在线测评还会刷人吗?

过了面试&#xff0c;后面的在线测评还会刷人吗&#xff1f;完全有可能刷&#xff0c;如果不是为了刷&#xff0c;何必要给你做线上测评&#xff0c;我说的有道理不&#xff1f; 好吧&#xff0c;说到为什么在线测评要刷人&#xff0c;怎么刷&#xff1f; 怎么才能确保不被刷&…

教你快速阅读java简单字节码

我们举例代码 public class Read {public static void main(String[] args) {int a20;int b30;a1;b15;System.out.println((ab)/2);}}我们将他进行运行&#xff0c;我们就会在target 里面出现.class文件&#xff0c;我们需要进入 执行这个代码 javap -c Read.class就会出现…

【ICN综述】信息中心网络隐私安全

ICN基本原理&#xff1a; 信息中心网络也是需要实现在不可信环境下可靠的信息交换和身份认证 信息中心网络采用以数据内容为中心的传输方式代替现有IP 网络中以主机为中心的通信方式&#xff0c;淡化信息数据物理或逻辑位置的重要性&#xff0c;以内容标识为代表实现数据的查找…

基于java+springboot+vue城市轨道交通线路查询系统-公交车线路查询

项目介绍 本系统是针对目前交通管理的实际需求&#xff0c;从实际工作出发&#xff0c;对过去的市轨道交通线路查询系统存在的问题进行分析&#xff0c;完善用户的使用体会。采用计算机系统来管理信息&#xff0c;取代人工管理模式&#xff0c;查询便利&#xff0c;信息准确率…