Mac 使用 npm 安装包的时候显示权限错误
报错截图
原因
npm 包管理器下载各种包的时候依赖 nodejs, 而你的 nodejs 是在官网上安装的 .pkg
包,这种方式是通过安装器来实现的,导致 npm 在安装全局包的时候出现权限错误。
解决方式
这里我们直接来看 npm 官方推荐的方式:
- 通过 node 版本工具重新安装你的 npm
安装 nvm
由于网络问题,通过 nvm 官网提供的安装脚本很有可能安装失败,推荐手动安装 nvm。
终端中输入一下命令安装 nvm
1
2
3
4
5export 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
中 添加如下代码:1
2export 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 | nvm install 16 // 推荐用这个 |
装完可以查看一下 node 和 npm 的版本
1 | npm --version |
刨根究底
为什么通过 nvm 安装之后就不会出现权限的问题呢?
因为 nvm 安装的 Node.js 路径并不在需要权限的路径中
终端中输入
1 | open .nvm |
此时终端将会打开 Finder。我们就可以发现 Node.js 其实是安装在用户根目录(也就是~这个路径 )上的。