gyp WARN EACCES 用户“root”没有访问开发目录的权限

Posted

技术标签:

【中文标题】gyp WARN EACCES 用户“root”没有访问开发目录的权限【英文标题】:gyp WARN EACCES user "root" does not have permission to access the dev dir 【发布时间】:2015-06-10 16:21:08 【问题描述】:

尝试

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。

【问题讨论】:

【参考方案1】:

尝试:

sudo npm install -g module --unsafe-perm

【讨论】:

不,你没有sudo npm——看我的回答! 谢谢,它解决了我的问题。由于某种原因,我无法实现上述答案。 对我来说这很有效。在 root 上运行 npm,因此需要确保它可以作为 root 运行。 --不安全烫发。感谢修复 在 pkg 文档中也提到过:npmjs.com/package/serialport/v/7.0.2if you're going to use sudo or root to install Node-Serialport, npm will require you to use the unsafe parameters flag. sudo npm install serialport --unsafe-perm --build-from-source【参考方案2】:

更新。有一个更好的方法 - 将 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


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

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

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

解决办法是用

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

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

See here for more details.

【讨论】:

【参考方案3】:

那是因为您在此目录“/Users/dmitrizaitsev/.node-gyp/0.12.0”中没有文件夹。

只需创建一个名为 0.12.0 的新文件夹这是您节点的版本号

它会解决问题。

【讨论】:

2 年后,在节点 9.0.0 上遇到了这个问题,当然我没有目录 /usr/local/js/node-v9.0.0/lib/node_modules/@angular/cli/node_modules/node-sass/.node-gyp/9.0.0,因为这是安装脚本应该处理的。毕竟这就是它的目的。相反,我在安装过程中收到“没有权限”错误和无限循环。 90年代的感觉。小丑。 好吧,mkdir 打破了安装程序的循环。继续下一个问题。

以上是关于gyp WARN EACCES 用户“root”没有访问开发目录的权限的主要内容,如果未能解决你的问题,请参考以下文章

gyp ERR! stack Error: EACCES: permission denied, mkdir '/usr/local/lib/node_modules/bcrypt/.node

Error: EACCES: permission denied, mkdir '......node-sass/build'错误解决方案

安装 canvasnode-sass 报错或者警告 node-pre-gyp WARN

npm 安装模块报node-gyp ERR!

我收到错误 EACCES: permission denied, open '/root/.pm2/module_conf.json' error after npm start 命令

linux 下 root 权限执行 npm install 报错:Error:EACCES:permission denied ‘xxx‘?