在mac OS或liunx系统下,有时候在安装node-sass时会出现,Permissions Errors
可能出现的情况是这样:
阅读后你将得到什么
- 你将成功的解决node-sass安装不了苦恼(相同或类似的问题)
- 不仅仅是node-sass,其他模块如此类问题,同样可以解决
- 你将获得处理此类问题的,多种解决方案
- 你将了解到出现此类问题的原因,以及如何避免此类问题
错误分析
找到输出信息里的关键词user "root" does not have permission to access the dev dir
貌似是权限问题,但有时候是root
用户了,为什么会有权限问题?
解决问题的方案有下面几种:
方案一 添加参数(–unsafe-perm)
在安装node-sass
时,使用参数--unsafe-perm
例如:
1 | npm install --unsafe-perm node-sass |
解析:
--unsafe-perm
在root下默认值为false,其他的默认值为true
设置为true,在run package script时会切换UID/GID
明确设置为false,在非root用户下安装会失败
方案二 添加参数(–user=root)
在安装node-sass
时,使用参数--user=root
例如:
1 | npm install --user=root node-sass |
该参数指定了再执行脚本时使用的账号(UID),默认是nobody
方案四 修改现有node的权限
如果你是直接使用了已经编译后的node版本
那么你解压之后的目录权限可能是这样的
1 | drwxrwxr-x 7 dev dev 4.0K 3月 24 11:25 node-v8.10.0-linux-x64 |
也可能是这样的
1 | drwxrwxr-x 7 500 500 4.0K 3月 24 11:25 node-v8.10.0-linux-x64 |
这里就需要修改node目录的权限为root
1 | chown root:root node-v8.10.0-linux-x64 |
方案四 重新安装node(推荐使用nvm)
nvm是个node版本管理工具,可以方便的下载安装node,并且可以方便的切换node版本
这是直接贴上nvm地址,如何安装看文档
方案五 npm提供的解决方案(How to Prevent Permissions Errors)
1 | ## 创建.npm-global目录 |
通过上述方法的其中一种,就可以解决问题。