在使用node的过程当中,用npm安装一些模块,特别是全局包的时候,因为Mac系统安全性的限制,常常出现安装没有权限,或者安装完成使用时出现Command not found
的状况。node
以前我都是经过使用修改权限的方式来解决,可是太麻烦又感受不太安全,因而我就到网上找解决的方法,发现其实官方也是推荐咱们使用node的管理工具来解决这个问题的。官方推荐了两个n
和nvm
,这里我选择的是nvm
。git
至于二者的区别能够看一下淘宝团队的一篇文章管理node版本,选择nvm仍是n?github
这篇文章主要想说的就是在Mac下nvm的安装和遇到的问题。npm
注意:不要使用
Homebrew
安装nvm,这个在nvm
的官方文档中有说明。安全
具体的步骤以下:bash
首先打开终端,进入当前用户的home目录中。网络
cd ~
复制代码
而后使用ls -a
显示这个目录下的全部文件(夹)(包含隐藏文件及文件夹),查看有没有.bash_profile
这个文件。curl
ls -a
复制代码
若是没有,则新建一个。electron
touch ~/.bash_profile
复制代码
若是有或者新建完成后,咱们经过官方的说明在终端中运行下面命令中的一种进行安装:工具
curl -o- https://raw.githubusercontent.com/creationix/nvm/v0.33.11/install.sh | bash
复制代码
wget -qO- https://raw.githubusercontent.com/creationix/nvm/v0.33.11/install.sh | bash
复制代码
在安装完成后,也许你会在终端输入nvm
验证有没有安装成功,这个时候你会发现终端打出Command not found
,其实这并非没有安装成功,你只须要重启终端就行,再输入nvm
就会出现Node Version Manager
帮助文档,这代表你安装成功了。
这里须要注意的几点就是:
第一点 不要使用homebrew
安装nvm
第二点 关于.bash_profile
文件。若是用户home
目录下没有则新建一个就能够了,不须要将下面的两段代码写进去,由于你在执行安装命令的时候,系统会自动将这两句话写入.bash_profile
文件中。网络上我找了好多文章都是说在安装前先手动写进去,通过测试这是没有必要的,并且好像会形成安装不成功,这一点须要注意一下。
export NVM_DIR="${XDG_CONFIG_HOME/:-$HOME/.}nvm"
[ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh"
复制代码
nvm ls-remote
列出全部可安装的版本
nvm install <version>
安装指定的版本,如nvm install v8.14.0
nvm uninstall <version>
卸载指定的版本
nvm ls
列出全部已经安装的版本
nvm use <version>
切换使用指定的版本
nvm current
显示当前使用的版本
nvm alias default <version>
设置默认node版本
在终端咱们能够使用which node
来查看咱们的node
被安装到了哪里,这里终端打印出来的地址实际上是你当前使用的node版本快捷方式的地址。
/Users/你的用户名/.nvm/versions/node/v10.13.0/bin/node
复制代码
若是你想查看全部node
版本的安装文件夹,咱们能够在访达(finder)
中使用快捷键Command+Shift+G
输入/Users/你的用户名/.nvm/versions
地址就能够看到。
可是这里想说的是Mac默认是不显示隐藏文件夹的,.nvm
是个隐藏文件夹在访达(finder)
中看不到,直接输入地址是无效的,在Mac下显示隐藏文件的快捷键是Command+Shift+.
,关闭也是这个快捷键。
看!这是个人!
这是在v8.14.0
版本node
的lib
中node_modules
下的模块,能够看到我刚刚安装的cnpm
和electron
可是在v10.13.0
一样的目录下只有npm
因此能够知道在nvm
下node
版本管理方式,安装的模块不是公用的,也就是说你在切换版本后须要在切换的版本下从新安装,这一点和n
是不一样的,固然这也是它的优点。