错误截图:
起因
出现权限错误的原因大概率是你在 Node.js 的官网下载了 Node.js 的安装器,并通过这个安装器来安装 Node.js。
npm 官方并不推荐使用 Node.js 安装器去安装 Node.js。
因为 Node.js 安装进程会将 npm 安装到本地需要权限的路径,这么做会导致当你使用 npm 在全局安装包的时候发生权限错误(permissions errors)。
解决方案
npm 官方提供了两种解决这个问题的方式。
-
通过 node 版本工具重新安装你的 npm(推荐)
-
手动修改 npm 的默认文件夹
我们在这里直接使用官方推荐的方式解决这个问题。
最佳方案
通过 node 版本工具重新安装你的 npm,这是避免权限问题的最佳方案。你不需要移除当前版本的 npm 或者是 Node.js 。
我们使用 nvm 来作为管理 Node.js 的工具。
安装 nvm
由于网络问题,通过 nvm 官网提供的安装脚本很有可能安装失败,因此我推荐你手动的安装 nvm。
-
在命令行中输入如下命令:
export NVM_DIR="$HOME/.nvm" && ( git clone https://github.com/nvm-sh/nvm.git "$NVM_DIR" cd "$NVM_DIR" git checkout `git describe --abbrev=0 --tags --match "v[0-9]*" $(git rev-list --tags --max-count=1)` ) && \. "$NVM_DIR/nvm.sh"
-
在
~/.zshrc
中 添加如下代码:注释:这是为了在启动终端后能够使用 nvm
export NVM_DIR="$HOME/.nvm" [ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh" # This loads nvm
如果在用户目录(也就是打开终端后的默认目录)上并没有
~/.zshrc
,那么你需要创建这个文件:touch .zshrc
然后再把代码粘贴进去,保存,重启终端。
-
重启终端后输入
nvm -v
如果终端中出现了一串类似于版本号的数字,那么恭喜你安装成功了~
使用nvm安装 node.js
在控制台中运行下面的命令:
nvm install 12
注意:
nvm install node
下载的是最新版本的 node,不建议用最新的nvm install 12
这里的 12 指的是版本号,建议使用偶数版本,奇数版本是非稳定版本
当你安装完 node 之后,npm也就跟着安装好了。
你可以使用 npm --version
命令来看看 npm 的版本。
最后一点探究
问:最后我们探究一下,为什么使用 nvm 安装之后就不会存在权限问题。
答:因为 nvm 安装的 Node.js 路径并不在需要权限的路径中
我们可以在终端中输入
open .nvm
此时终端将会打开 Finder
此时我们就可以发现 Node.js 其实是安装在用户根目录(也就是~
这个路径 )上的。