node.js - gyp WARN EACCES 用户 "root"没有访问开发目录的权限

标签 node.js permissions npm root

尝试

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 版本 0.12.0 在同一安装过程中一次又一次地下载和重建,尽管是我机器上的当前 Node 版本:

node -v
v0.12.0

问题:

  • 目录“/Users/dmitrizaitsev/.node-gyp/0.12.0”实际上不见了!为什么会有这样的误导性信息?

  • 为什么在 node v0.12.0 期间和之前使用 node-gyp 成功重建期间都没有创建此目录?

  • (显然)我怎样才能防止这种情况发生?

如果这很重要,我会运行 Mac OSX 10.8.5。

最佳答案

更新。有一个更好的方法 - 将 npm 的默认全局目录更改为您已经拥有正确权限的用户子目录,因此无需首先弄乱系统文件的权限或所有权。

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

  1. Make a directory for global installations:
mkdir ~/.npm-global
  1. Configure npm to use the new directory path:
npm config set prefix '~/.npm-global'
  1. Open or create a ~/.profile (or ~/.bash_profile etc) file and add this line (at the end of the file):
export PATH=~/.npm-global/bin:$PATH
  1. On the command line, update your system variables:
source ~/.profile

source ~/.bash_profile

另请参阅 Sindre Sorhus 关于该主题的指南:https://github.com/sindresorhus/guides/blob/master/npm-global-without-sudo.md


现在已经弄清楚出了什么问题:

目录有错误的权限 - 它不是可写(这将是比“可访问”更好的错误消息)。

而且因为它不可写,所以每次使用后都会使用并删除一个临时目录,这就是为什么整个下载必须一次又一次地运行的原因。

解决办法是用

设置用户权限
sudo chown -R $USER <directory>

再也不要sudo npm了。 似乎每次运行 sudo npm 时,创建的所有子目录都会获得错误的权限,这将导致以后出现问题。

See here for more details .

关于node.js - gyp WARN EACCES 用户 "root"没有访问开发目录的权限,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29468404/

相关文章:

google-app-engine - 谷歌云节点安装第三方库 Node.js

javascript - Mongoose - 将对象 ID 推送到 ObjectIds 数组

node.js - 如何在Node.js中处理同步浏览器仿真

java - 如何使用java授予文件和文件夹700和770权限

node.js - 如何修复通过命令行安装 Zurb Foundation for Apps 生成的错误 : Enoent?

javascript - Typescript 和 Jquery 导入 - $ 不是函数

javascript - 删除父文档时 Mongoose 删除子文档引用

sockets - Node.JS WebSocket 和 Socket

php - MYSQL/PHP - 将用户附加到项目的有效方法

linux自动更改权限并更改所有权:group in a specified folder