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,如果这是重要的。

Solutions Collecting From Web of "gyp WARN EACCES用户“root”没有访问开发目录的权限"

UPDATE。 有一个更好的方法 – 将npm的默认全局目录更改为已经拥有正确权限的用户子目录,因此不需要首先混淆系统文件的权限或所有权。

按照https://docs.npmjs.com/getting-started/fixing-npm-permissions中的build议:

  1. 为全局安装创build一个目录:
 mkdir ~/npm-global 
  1. configurationnpm以使用新的目录path:
 npm config set prefix '~/npm-global' 
  1. 打开或创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的新文件夹,即您节点的版本号

它会解决这个问题。