gyp WARN EACCES用户“root”没有访问开发目录的权限
尝试去
sudo npm install protractor -g
和同样臭名昭着的错误/警告再次(search到无济于事):
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
在同一安装过程中一次又一次地下载和重build,尽pipe是我的机器上的当前节点版本:
node -v v0.12.0
问题:
-
目录“/Users/dmitrizaitsev/.node-gyp/0.12.0”实际上是缺less的! 为什么这样一个误导性的消息?
-
为什么这个目录既没有在
node v0.12.0
创build,也没有在上次使用node-gyp
node v0.12.0
成功重build过程中创build的? -
(很明显)我怎样才能防止这种情况发生?
我运行Mac OSX 10.8.5,如果这是重要的。
UPDATE。 有一个更好的方法 – 将npm
的默认全局目录更改为已经拥有正确权限的用户子目录,因此不需要首先混淆系统文件的权限或所有权。
按照https://docs.npmjs.com/getting-started/fixing-npm-permissions中的build议:
- 为全局安装创build一个目录:
mkdir ~/npm-global
- configurationnpm以使用新的目录path:
npm config set prefix '~/npm-global'
- 打开或创build一个
~/.profile
(或~/.bash_profile
等)文件,并添加这一行(在文件的末尾):
export PATH=~/npm-global/bin:$PATH
另请参阅Sindre Sorhus关于此主题的指南: https : //github.com/sindresorhus/guides/blob/master/npm-global-without-sudo.md
现在弄清楚了什么是错的:
该目录有错误的权限 – 这是不可写 (这将是一个比“可访问”更好的错误信息)。
而且由于它是不可写的,每次使用后都会使用一个临时目录并将其删除,这就是为什么整个下载必须反复运行的原因。
解决scheme是使用设置用户权限
sudo chown -R $USER <directory>
永远不要再次发布。 看来每当你运行sudo npm
,所有创build的子目录都会得到错误的权限,这会导致以后的问题。
在这里看到更多的细节 。
试试:
sudo npm install -g module –unsafe-perm
这是因为在这个目录中没有文件夹“/Users/dmitrizaitsev/.node-gyp/0.12.0”。
只需创build一个名为0.12.0的新文件夹,即您节点的版本号
它会解决这个问题。