最新消息:雨落星辰是一个专注网站SEO优化、网站SEO诊断、搜索引擎研究、网络营销推广、网站策划运营及站长类的自媒体原创博客

gyp WARN EACCES用户“root”无权访问dev dir

运维笔记admin11浏览0评论

gyp WARN EACCES用户“root”无权访问dev dir

gyp WARN EACCES用户“root”无权访问dev dir

尝试去

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。

回答如下:

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

正如https://docs.npmjs/getting-started/fixing-npm-permissions所推荐:

  1. 为全局安装创建一个目录:
mkdir ~/.npm-global
  1. 配置npm以使用新的目录路径:
npm config set prefix '~/.npm-global'
  1. 打开或创建一个~/.profile(或~/.bash_profile等)文件并添加此行(在文件末尾):
export PATH=~/.npm-global/bin:$PATH
  1. 在命令行上,更新系统变量:
source ~/.profile

或者source ~/.bash_profile

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


现在想出了什么是错的:

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

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

解决方案是使用设置用户权限

sudo chown -R $USER <directory>

而且再也没有sudo npm。似乎无论何时运行sudo npm,所有创建的子目录都会获得错误的权限,这将导致以后出现问题。

See here for more details。

发布评论

评论列表(0)

  1. 暂无评论