当前位置: 首页 > 后端技术 > Node.js

Mac下安装nvm管理node(解决版)

时间:2023-04-03 16:39:23 Node.js

前言在使用node的过程中,在使用npm安装一些模块,尤其是全局包的时候,由于Mac系统安全的限制,经常会出现安装不上的情况有权限,或者安装完成后出现Commandnotfound。之前都是通过修改权限来解决的,但是太麻烦,感觉不安全,于是上网找了解决方法,发现官方也推荐我们使用节点管理工具来解决这个问题。官方推荐的是两个n和nvm,这里我选择nvm。至于两者的区别,可以看淘宝团队一篇管理node版本的文章。选择nvm还是n?安装这篇文章主要想说一下nvm的安装以及Mac下遇到的问题。注意:不要使用Homebrew来安装nvm,这个在nvm的官方文档中有说明。具体步骤如下:首先,打开终端,进入当前用户的家目录。cd~/然后用ls-a显示该目录下的所有文件(文件夹)(包括隐藏文件和文件夹),看是否有.bash_profile文件。ls-a如果没有就新建一个。touch~/.bash_profile如果有或者新建完成后,我们通过官方说明在终端运行以下命令之一进行安装:curl-o-https://raw.githubusercontent.com/nvm-sh/nvm/v0.35.2/install.sh|bashwget-qO-https://raw.githubusercontent.com/nvm-sh/nvm/v0.35.2/install.sh|bash安装完成后,也许你会在终端输入nvm来验证是否安装成功,此时你会发现终端显示Commandnotfound。其实并不是安装不成功。你只需要重启终端,然后输入nvm,就会出现NodeVersionManager的帮助文档,就说明你安装成功了。注意这里有几点需要注意:第一点是不要使用homebrew来安装nvm,第二点是关于.bash_profile文件。如果用户家目录下没有,就新建一个。下面两段代码就不用写了,因为当你执行安装命令的时候,系统会自动把这两句写到.bash_profile文件中。导出NVM_DIR="$HOME/.nvm"[-s"$NVM_DIR/nvm.sh"]&&\."$NVM_DIR/nvm.sh"#这会加载nvm[-s"$NVM_DIR/bash_completion"]&&\."$NVM_DIR/bash_completion"#Thisloadsnvmbash_completion网上找了很多文章说下面两句要在安装前手动写进去。经测试,不正确,会导致安装失败。有一件事需要注意。导出NVM_DIR="${XDG_CONFIG_HOME/:-$HOME/.}nvm"[-s"$NVM_DIR/nvm.sh"]&&\."$NVM_DIR/nvm.sh"第三点要保证Mac中安装了git,一般只要下载Mac版的Xcode开发工具,它就自带了git。在最新的Catalina系统下安装nvm注意,最新的macOSCatalina系统(即10.15及之后的版本)默认的shell是zsh,不是bash,安装后命令将不可用。这里有两个解决方案:首先,我们需要将默认的shell更改为bash。具体可以参考苹果官网的相关文章Howtochangethedefaultshell。如果之前习惯使用zsh,也可以自己配置。第二种方式,如果想使用zsh终端,在上面安装之后,在.bash_profile同级目录下新建一个.zshrc文件,用vim打开该文件,加入下面两句,重启终端即可。导出NVM_DIR="$HOME/.nvm"[-s"$NVM_DIR/nvm.sh"]&&\."$NVM_DIR/nvm.sh"#这会加载nvm[-s"$NVM_DIR/bash_completion"]&&\."$NVM_DIR/bash_completion"#这个加载nvmbash_completion使用git安装方式解决443等错误。我最近买了一台新电脑。重新配置开发环境时,发现安装nvm时总是出现443错误。以前只是偶尔出现。网上有很多解决方案,但我一直坚持保持系统干净整洁,不想过多改动系统文件和配置(就是这个原则,每次环境搭建好后,整个过程一直很稳定,没有遇到过一些奇怪的问题),最后查资料发现使用git安装可以解决问题,方法如下:注:git版本v1.7.10+是必须的,除了安装不再使用curl或wget,之前所有的注意事项和步骤仍然有效首先进入当前用户的主目录,clonecd~/gitclonehttps://github.com/nvm-sh/nvm.git.nvmclone完成后,进入.nvm目录,checkout最新版本cd~/.nvmgitcheckoutv0.38.0然后,我们来激活它。./nvm.sh注意,如果使用git安装nvm,需要手动将下面两句写入.bash_profile文件,否则重启bash后会找不到该命令exportNVM_DIR="$HOME/.nvm[-s"$NVM_DIR/nvm.sh"]&&\."$NVM_DIR/nvm.sh"#这会加载nvm[-s"$NVM_DIR/bash_completion"]&&\."$NVM_DIR/bash_completion"#Thisloadsnvmbash_completion最后在终端输入nvm看是否安装成功一些常用的nvm命令nvmls-remotelistallinstallableversionsnvminstall安装指定的版本,例如,nvminstallv8.14.0nvmuninstall卸载指定版本nvmls列出所有安装的版本nvmuse切换使用指定版本nvmcurrent显示当前使用的版本nvmaliasdefault设置默认节点版本nvmdeactivate取消绑定当前版本。默认情况下,nvm无法删除设置为默认版本的节点,尤其是在只安装一个节点的情况下。node,这时候我们需要先解绑当前版本,然后使用nvmuninstall删除安装node的地方。在终端中,我们可以使用whichnode来检查我们的节点安装在哪里。这里,终端打印出来地址其实就是你当前使用的node版本快捷方式的地址/Users/你的用户名/.nvm/versions/node/v10.13.0/bin/node如果你想查看的安装文件夹所有node版本,我们可以在查找器(finder)中,使用快捷键Command+Shift+G输入/Users/你的用户名/.nvm/versions地址就可以看到了。不过这里要说的是Mac默认是不显示隐藏文件夹的。.nvm是在Finder中看不到的隐藏文件夹。Mac上显示隐藏文件的快捷键是Command+Shift+.,也是关闭的。这个快捷键。看!这是我的!这是nodev8.14.0的lib中node_modules下的模块。可以看到我刚刚安装的cnpm和electron,但是v10.13.0的同级目录下只有npm,所以可以知道nvm下的node版本管理方法,安装的模块不是public的,也就是说你切换版本后需要在切换后的版本下重新安装。这与n不同,当然这也是它的优点。