nvm可以管理node不同版本之间的丝滑切换,避免重复入坑,特此记录。
注意:在下载nvm之前需要卸载本电脑已经安装的node!(参考:https://www.jianshu.com/p/88cd55296983)
卸载从node官网下载pkg安装的node
sudo rm -rf /usr/local/{bin/{node,npm},lib/node_modules/npm,lib/node,share/man/*/node.*}
卸载不干净可细分删除
第一步:打开终端,输入以下命令显示 Node.js 的安装路径:
which node执行该命令后,会显示安装路径:/usr/local/bin/node
第二步:输入以下命令删除 Node.js 相关的文件:
sudo rm -rf /usr/local/bin/npm
sudo rm -rf /usr/local/share/man/man1/node.1
sudo rm -rf /usr/local/lib/dtrace/node.d
sudo rm -rf ~/.npm
sudo rm -rf ~/.node-gyp
sudo rm /usr/local/bin/node
该命令会删除 Node.js 的可执行文件、npm 包管理器、手册页、DTrace 跟踪文件和用户目录下相关文件。
第三步:确定是否完全卸载 Node.js。在终端中输入以下命令:
node -v 如果显示“command not found”,则表示已经卸载干净。
开启nvm旅程
一、进入官网http://nvm.uihtm.com/ 下载选择nvm for mac
安装参考:https://nvm.uihtm.com/#nvm-mac
遇到问题汇总:
1、nvm安装失败
解决方案:
终端中输入: sudo vim /etc/hosts
编辑插入: 185.199.110.133 raw.githubusercontent.com
按键盘键 esc
输入: :wq 保存退出编辑
退出后继续执行curl
成功
提示:如果没有成功,换剩下的ip地址,多试几次。
拓展
配置nvm
export NVM_DIR="$HOME/.nvm"
[ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh"如果你使用的是 `zsh` 终端,你还需要添加以下内容:
[ -s "$NVM_DIR/bash_completion" ] && \. "$NVM_DIR/bash_completion"参考(文章 https://zhuanlan.zhihu.com/p/628104200),用来理解nvm安装成功后, .bash_profile文件中的命令含义
这里也直接解释了问题3配置的原因
当从bash切换为zsh时,如果不想重新配置一遍.zshrc文件,可以__在.zshrc文件中加上source ~/.bash_profile,从而直接从.bash_profile文件读取配置。
2、nvm -v 提示
解决办法
参考: https://blog.csdn.net/echollk/article/details/128722478
终端输入: source ~/.bash_profile // 使得配置的环境变量才生效
因为mac自带终端与vscode同时使用,会出现重启后依然提示zsh:command not find : nvm,也就引出了问题3
3、终端重启后提示zsh:command not find : nvm
参考:https://blog.csdn.net/zm_miner/article/details/124850215
cd ~
创建 .bashrc文件
sudo vim ~/.bash_profile
添加一行 source ~/.bashrc // 按照自身换环境变量是否有需要
按esc键, :wq 保存退出编辑
执行source ~/.bash_profile
依然提示zsh:command not find : nvm
zsh终端必要的条件如下:
cd ~
找到~/.zshrc文件
找不到就重新建 touch ~/.zshrc文件
添加一行代码: source ~/.bash_profile
按esc键, :wq 保存退出编辑
执行source ~/.zshrc
这个时候在iTerm的终端使用nvm 就可以了
在vscode新开一个终端使用nvm 也可以了
如果如果不行在.zshrc 最底部加入这些试试: PATH=/bin:/usr/bin:/usr/local/bin:${PATH} export PATH
到这里才算实实在在安装完成!
解释说明: 怎么修改,环境变量都不生效,比如修改的是~/.bash_profile,那么必须`source~/.bash_profile`才能生效,而且重启后继续无效,为什么呢?因为 zsh !终端是iTerm,它很炫酷,但是就是环境变量搞不成。安装 zsh后,~/.bash_profile并没有被执行,所以需要编辑 zsh 的配置文件~/.zshrc,在该文件里加入
拓展: 关于zsh终端与bash终端
两者都是shell的一种,zsh都够基本完美的兼容bash的命令
1、mac终端默认zsh
zsh对应的配置文件
~/.zprofile: 在用户主目录下,以加载配置文件相关的配置
~/.zshrc:文件包含一些用于配置新打开的shell的命令。这与用户登录时执行的.zprofile文件不同2、bash不是默认的,也是平时比较常用的终端
bash对应的配置文件
~/.bashrc:该文件包含专用于你的bash shell的bash信息,当登录时以及每次打开新的shell时,该文件被读取.
~/.bash_profile:每个用户都可使用该文件输入专用于自己使用的shell信息,当用户登录时,该文件仅仅执行一次!默认情况下,他设置一些环境变量,执行用户的.bashrc文件.
执行顺序:最开始全局加载 /etc/.profile 文件,再执行 ~/.profile 或者 ~/.bash_profile 文件,之后加载 ~/.bashrc文件3、配置文件读取
bash读取的配置文件: ~/.bash_profile文件
zsh读物的配置文件:~/.zshrc文件
所以在默认zsh终端的mac上,通常会 在~/.zshrc文件里加一句 source ~/.bash_profile。去执行用户配置在~/.bash_profile文件的信息4、名词解释
“~ ” 你的home目录,在OS X下位于/Users/你的用户名/
“.” 类unix下的隐藏文件,文件名带"."之后在GUI文件管理器和ls的默认设置下不会显示出来,使用ls -a命令可以显示出这些文件。
zshrc是一个文件,准确的说这个文件的文件名是".zshrc".5、常见命令
echo $PATH 查看系统路径
echo $SHELL 查看默认shell
cat /etc/shells 查看已经安装的shell
二、nvm常用命令
nvm install ## 安装指定版本,可模糊安装,如:安装v6.2.0,既可nvm install v6.2.0,又可nvm install 6.2
nvm uninstall ## 删除已安装的指定版本,语法与install类似
nvm use ## 切换使用指定的版本node
nvm ls ## 列出所有安装的版本
nvm ls-remote ## 列出所以远程服务器的版本(官方node version list)
nvm current ## 显示当前的版本
nvm alias ## 给不同的版本号添加别名
nvm unalias ## 删除已定义的别名
nvm reinstall-packages ## 在当前版本node环境下,重新全局安装指定版本号的npm包
nvm对node的版本管理
nvm on: :开启node.js版本管理。
nvm off : :关闭node.js版本管理。
三、卸载 (暂时还未实践,等我有需要实践后再具体写)
nvm use system
npm uninstall -g a_module
四、其他安装方式请参考官网