尝试去
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 version 0.12.0
node -v v0.12.0
问题:
实际上缺少目录“ /Users/dmitrizaitsev/.node-gyp/0.12.0”!为什么会有这样的误导性消息?
为什么node v0.12.0在和之前成功重建期间都没有创建此目录node-gyp?
node v0.12.0
node-gyp
(显然)如何防止这种情况发生?
如果这很重要,我可以运行Mac OSX 10.8.5。
更新。有一个更好的方法-将npm的默认全局目录更改为您已经具有正确权限的用户子目录,因此不必首先弄乱系统文件的权限或所有权。
npm
如https://docs.npmjs.com/getting-started/fixing-npm- permissions中的建议 :
创建用于全局安装的目录:
mkdir ~/.npm-global
配置npm以使用新的目录路径:
npm config set prefix '~/.npm-global'
打开或创建一个~/.profile(或其他~/.bash_profile)文件,并添加以下行(在文件末尾):
~/.profile
~/.bash_profile
export PATH=~/.npm-global/bin:$PATH
在命令行上,更新系统变量:
source ~/.profile
要么 source ~/.bash_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。似乎每当您运行时sudonpm,所有创建的子目录都会获得错误的权限,这将在以后导致问题。
sudo npm
sudonpm