Ubuntu16.04安装@angular/cli出现EACCESS权限错误如何解决?
解决Ubuntu下全局安装@angular/cli的EACCESS权限问题
兄弟,我太懂你这种两难了——用root权限跑命令确实能消掉EACCESS错误,但总怕不小心搞坏系统文件,毕竟root权限的威力太大了。针对你在Ubuntu 16.04、node v8.11.1、npm v5.6.0环境下遇到的这个问题,给你几个靠谱的非root解决方案:
方案一:修改npm全局安装目录到用户专属路径(最推荐)
这个方法从根源上解决权限问题,把全局包安装到你自己的用户目录下,完全不需要碰root权限:
- 先在用户主目录创建一个专门存放全局npm包的文件夹:
mkdir ~/.npm-global - 告诉npm以后用这个新目录作为全局安装的前缀路径:
npm config set prefix '~/.npm-global' - 接下来要把这个目录加入系统的PATH环境变量,这样终端才能找到你全局安装的命令。编辑你的用户配置文件:
nano ~/.profile - 在文件末尾添加这一行内容:
export PATH=~/.npm-global/bin:$PATH - 保存退出后,让配置立即生效:
source ~/.profile - 现在再去安装@angular/cli就完全没问题了:
npm install -g @angular/cli
方案二:用npx临时安装运行(适合临时场景)
如果你只是想快速创建Angular项目,不想折腾全局配置,可以直接用npx,它会临时下载@angular/cli并执行,不需要全局安装:
npx @angular/cli new my-app
不过这个方法不会把cli全局安装到你的系统里,下次再用还得重新下载,所以长期用的话还是方案一更合适。
方案三:修复现有目录权限(不推荐,仅临时救急)
如果你实在不想改全局目录,也可以修改npm默认全局目录的所有者为当前用户,这样普通用户就能写入了:
sudo chown -R $USER:$USER /usr/lib/node_modules
⚠️ 注意:这个方法会修改整个系统级node_modules目录的权限,可能影响其他依赖包的正常使用,所以不到万不得已不建议用。
为啥会出现这个错误?
简单说就是npm默认把全局包装到系统级目录(比如/usr/lib/node_modules),这个目录只有root用户才有写入权限,普通用户执行全局安装自然就会触发EACCESS错误。改成用户目录下的路径就完美避开了这个权限限制,而且更安全,不会影响系统其他部分。
内容的提问来源于stack exchange,提问作者Joe
相关产品推荐
相关产品推荐

