错误截图:

image-20210815231851483.png

起因

出现权限错误的原因大概率是你在 Node.js 的官网下载了 Node.js 的安装器,并通过这个安装器来安装 Node.js。

npm 官方并不推荐使用 Node.js 安装器去安装 Node.js。

因为 Node.js 安装进程会将 npm 安装到本地需要权限的路径,这么做会导致当你使用 npm 在全局安装包的时候发生权限错误(permissions errors)。

解决

npm 官方提供了两种解决这个问题的方式。

  • 通过 node 版本工具重新安装你的 npm(推荐)
  • 手动修改 npm 的默认文件夹

我们在这里直接使用官方推荐的方式解决这个问题。

通过 node 版本工具重新安装你的 npm

通过 node 版本工具重新安装你的 npm,这是避免权限问题的最佳方案。你不需要移除当前版本的 npm 或者是 Node.js 。

我们使用 nvm 来作为管理 Node.js 的工具。

安装 nvm

由于网络问题,通过 nvm 官网提供的安装脚本很有可能安装失败,因此我推荐你手动的安装 nvm。

  1. 在命令行中输入如下命令:

    1. export NVM_DIR="$HOME/.nvm" && (
    2. git clone https://github.com/nvm-sh/nvm.git "$NVM_DIR"
    3. cd "$NVM_DIR"
    4. git checkout `git describe --abbrev=0 --tags --match "v[0-9]*" $(git rev-list --tags --max-count=1)`
    5. ) && \. "$NVM_DIR/nvm.sh"
  2. ~/.zshrc 中 添加如下代码:

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

如果在用户目录(也就是打开终端后的默认目录)上并没有 ~/.zshrc ,那么你需要创建这个文件:
然后再把代码粘贴进去,保存,重启终端。

  1. 重启终端后输入
    1. nvm -v

    image-20210815234246707.png
    此时终端中会打印出 nvm 的版本信息,也就是说,你安装成功了。

使用nvm安装 node.js

在控制台中运行下面的命令:

  1. nvm install 12

image-20210815234343813.png

注意:

  • nvm install node 下载的是最新版本的 node,不建议用最新的
  • nvm install 12 这里的 12 指的是版本号,建议使用偶数版本,奇数版本是非稳定版本

当你安装完 node 之后,npm也就跟着安装好了。

你可以使用 npm --version 命令来看看 npm 的版本。

最后一点探究

:最后我们探究一下,为什么使用 nvm 安装之后就不会存在权限问题。

:因为 nvm 安装的 Node.js 路径并不在需要权限的路径中

我们可以在终端中输入

  1. open .nvm

此时终端将会打开 Finder

此时我们就可以发现 Node.js 其实是安装在用户根目录(也就是~这个路径 )上的。

image-20210815235000483.png

参考