0%

Mac 使用 npm 显示无权限

Mac 使用 npm 安装包的时候显示权限错误

报错截图

no permission

原因

npm 包管理器下载各种包的时候依赖 nodejs, 而你的 nodejs 是在官网上安装的 .pkg 包,这种方式是通过安装器来实现的,导致 npm 在安装全局包的时候出现权限错误。

解决方式

这里我们直接来看 npm 官方推荐的方式:

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

安装 nvm

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

  1. 终端中输入一下命令安装 nvm

    1
    2
    3
    4
    5
    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"
  2. ~/.zshrc 中 添加如下代码:

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

    如果本地没有 .zshrc 文件,就先创建一个

    1
    touch .zshrc

    最后终端查看一下 nvm 的版本,安装成功

    1
    nvm -v

使用 nvm 安装 nodejs

这里装的是 16.x 的版本

1
2
3
nvm install 16 // 推荐用这个

nvm install node // 下载的是最新版本的 node,不建议用最新的

装完可以查看一下 node 和 npm 的版本

1
2
3
npm --version

node --version

刨根究底

为什么通过 nvm 安装之后就不会出现权限的问题呢?

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

终端中输入

1
open .nvm

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

nvm path

万一真有土豪呢