在 Mac 下安装 NodeJS 后使用 npm 往往会遇到很多问题,最困扰的就是权限和安装程序包时的问题。
权限问题
如果觉得每次都要写 sudo 很不爽,那么最好的解决方式就是更改 npm 默认的全局安装位置。
查看当前 npm 默认的全局安装位置
npm config get prefix /usr/local
在用户目录下建立一个新的目录,作为 npm 的全局安装目录
mkdir ~/.npm-global npm config set prefix "~/.npm-global"
接下来创建 bash_profile 文件并打开
touch .bash_profile open .bash_profile
添加如下内容并保存
export PATH=~/.npm-global/bin:$PATH
更新 shell
source ~/.bash_profile
再检查一下
npm config get prefix /Users/xxx/.npm-global
接下来可以在新位置重新安装 npm
npm install -g npm
安装成功后可以删除 usr/local/lib/node_modules、usr/local/bin/npm 和 usr/local/bin/npx 了。以上操作后就不会再存在权限问题了。
安装程序包
安装程序包碰到的最大的问题就是因为大家都知道的原因,导致的安装失败。目前的解决方案基本包括以下两种:使用 cnpm 和更改 npm 镜像源。
使用 cnpm 比较简单,全局安装 cnpm,安装成功之后 npm 替换为 cnpm 命令即可。但是通过 cnpm 也不是百分百能解决问题,而且还会出现各别程序包安装失败的情况,个人不太推荐。
更改 npm 镜像源为淘宝镜像
单次使用时,可以通过 registry 参数来设置,例如:
npm install --registry=https://registry.npm.taobao.org
永久使用的话,可以通过 config set registry 来设置
查看当前镜像源
npm config get registry https://registry.npmjs.org/
修改当前镜像为淘宝镜像
npm config set registry https://registry.npm.taobao.org
还原的话重新设置为 npm 默认的镜像地址即可。但是经测试,更改为淘宝镜像源的话,还是会出现某些程序包安装失败的问题(Electron)。所以个人比较建议单次使用的方式,碰到问题再想其他办法解决……
Electron 的解决方法为
ELECTRON_MIRROR=http://npm.taobao.org/mirrors/electron/ npm install -g electron
关于 Electron 的详细内容请见文章。