尝试
sudo npm install protractor -g
再次出现同样臭名昭着的错误/警告(谷歌搜索无效):
gyp WARN EACCES user "root" does not have permission to access the dev dir "/Users/dmitrizaitsev/.node-gyp/0.12.0"
似乎发生的事情是node version 0.12.0
在同一安装过程中一次又一次地下载和重建,尽管它是我机器上的当前节点版本:
node -v
v0.12.0
问题:
目录" /Users/dmitrizaitsev/.node-gyp/0.12.0"实际上是缺少的!为什么会出现这种误导性的消息?
为什么这个目录既未在node v0.12.0
期间创建,也未在上次使用node-gyp
成功重建期间创建?
(显然)我该如何防止这种情况发生?
如果有任何重要性,我会运行Mac OSX 10.8.5。
答案 0 :(得分:63)
更新。有一种更好的方法 - 将npm
的默认全局目录更改为您已拥有正确权限的用户子目录,因此无需首先处理系统文件的权限或所有权的地方。
按照建议 https://docs.npmjs.com/getting-started/fixing-npm-permissions:
- 为全局安装创建目录:
醇>
mkdir ~/.npm-global
- 配置npm以使用新目录路径:
醇>
npm config set prefix '~/.npm-global'
- 打开或创建
醇>~/.profile
(或~/.bash_profile
等)文件并添加此行(位于文件末尾):
export PATH=~/.npm-global/bin:$PATH
- 在命令行上,更新系统变量:
醇>
source ~/.profile
或 source ~/.bash_profile
另见Sindre Sorhus关于该主题的指南:https://github.com/sindresorhus/guides/blob/master/npm-global-without-sudo.md
现在想出了什么问题:
目录的权限错误 - 它不是可写(这可能是一个比#34更好的错误信息;可访问")。
因为它不可写,所以在每次使用后都使用并删除了一个临时目录,这就是整个下载必须一次又一次地运行的原因。
解决方案是使用
设置用户权限sudo chown -R $USER <directory>
再也不会sudo npm
。
无论何时运行sudo npm
,所有创建的子目录都会获得错误的权限,这将导致以后出现问题。
答案 1 :(得分:18)
尝试:
sudo npm install -g 模块 - unsafe-perm
答案 2 :(得分:2)
那是因为你在这个目录中没有一个文件夹“/Users/dmitrizaitsev/.node-gyp/0.12.0”。
只需创建一个名为0.12.0 的新文件夹,即您节点的版本号
它将解决问题。