npm 模块全局安装的权限问题
原文链接 http://geekspeng.cn/2017/09/01/npm-%E6%A8%A1%E5%9D%97%E5%85%A8%E5%B1%80%E5%AE%89%E8%A3%85%E7%9A%84%E6%9D%83%E9%99%90%E9%97%AE%E9%A2%98.html
注:以下为加速网络访问所做的原文缓存,经过重新格式化,可能存在格式方面的问题,或偶有遗漏信息,请以原文为准。
安装全局 npm 模块报 EACCES 错误的问题,例如:
$ npm install -g coffee-script
因为缺省的 npm 全局安装目录(/usr/local/node_modules)没有给当前登录用户以写权限。 当然可以在前面加上 sudo 来提升用户权限,但其实还有更好的方法
你可以通过以下三种方式的任意一种解决这个问题:
- 修改npm默认安装目录的权限
- 修改npm默认安装目录
- 借助第三方工具安装node,比如brew
<!-- more -->
修改npm默认目录的权限
$ sudo chown -R $(whoami) $(npm config get prefix)/{lib/node_modules,bin,share}
修改npm默认安装目录
创建一个用于全局安装的目录
mkdir ~/.npm-global
修改npm默认安装目录
npm config set prefix '~/.npm-global'
打开或者创建 ~/.profile 文件并且添加下面的语句:
export PATH=~/.npm-global/bin:$PATH
更新系统变量
source ~/.profile
测试
npm install -g jshint
从此以后 npm install -g 安装的模块就都会到该用户名字下面的 ~/.npm-global 目录中,这样就做到了用户隔离。
借助第三方工具安装node
如果是Mac OS系统,则可以使用Homebrew软件包管理器完全避免此问题
brew install node
引用:https://docs.npmjs.com/getting-started/fixing-npm-permissions