Bower安装时出现EACCES错误?

47

我在 StackOverflow 和其他一些网站上阅读了几个答案,但似乎没有解决我的问题。

我正在通过终端安装 AppGyver Add-ons。出现以下错误:

BradMacBookPro:SparksInSpain breadadams$ bower install https://##MY-DOWNLOAD-CODE##@addons.appgyver.com/steroids-addons.js?version=3.1.0 --save
bower not-cached    https://##MY-DOWNLOAD-CODE##@addons.appgyver.com/steroids-addons.js?version=3.1.0#*
bower resolve       https://##MY-DOWNLOAD-CODE##@addons.appgyver.com/steroids-addons.js?version=3.1.0#*
bower download      https://##MY-DOWNLOAD-CODE##@addons.appgyver.com/steroids-addons.js?version=3.1.0
bower EACCES        EACCES, mkdir '/Users/breadadams/.cache/bower/packages/7480e059b318750565b4b25c2556c9c4'

Stack trace:
Error: EACCES, mkdir '/Users/breadadams/.cache/bower/packages/7480e059b318750565b4b25c2556c9c4'

Console trace:
Trace
    at StandardRenderer.error (/usr/local/lib/node_modules/bower/lib/renderers/StandardRenderer.js:74:17)
    at Logger.updateNotifier.packageName (/usr/local/lib/node_modules/bower/bin/bower:109:18)
    at Logger.EventEmitter.emit (events.js:95:17)
    at Logger.emit (/usr/local/lib/node_modules/bower/node_modules/bower-logger/lib/Logger.js:29:39)
    at /usr/local/lib/node_modules/bower/lib/commands/install.js:27:16
    at _rejected (/usr/local/lib/node_modules/bower/node_modules/q/q.js:808:24)
    at /usr/local/lib/node_modules/bower/node_modules/q/q.js:834:30
    at Promise.when (/usr/local/lib/node_modules/bower/node_modules/q/q.js:1079:31)
    at Promise.promise.promiseDispatch (/usr/local/lib/node_modules/bower/node_modules/q/q.js:752:41)
    at /usr/local/lib/node_modules/bower/node_modules/q/q.js:574:44

System info:
Bower version: 1.2.8
Node version: 0.10.25
OS: Darwin 13.1.0 x64

我不是超级用户,我尝试了--allow-root选项,清理了bower缓存,但在安装时仍然遇到相同的错误。是本地权限问题吗?


##MY-DOWNLOAD-CODE## 是我的下载代码,顺便提醒一下,这不是问题的原因 :) - Brad Adams
sudo chown -R breadadams /Users/breadadams/.cache/bower/packages/7480e059b318750565b4b25c2556c9c4' - JackNova
8个回答

134

我曾经遇到过类似的问题,但这些建议都没有解决。当我使用管理员权限运行Bower时,问题得以解决,方法如下:

我有一个类似的问题,用这些建议也没能解决。直到我以root权限运行Bower时才成功,像这样:

sudo bower install --allow-root

2
如果这有效,那么您可能有权限问题。使用其他人已在下面指定的chown命令实际上将修复错误。您可以导航到/Users/<username>/.config/configstore并使用"ls -l"来检查所有权。如果其中任何文件归属于root,则可能是引起问题的原因。这是您使用"sudo chown -R .config/"(假设您在与.config目录相同的目录中)来更改用户所有权的地方。类似地在~/.cache目录上进行检查。 - Nick Brady
在执行完上述命令后,我建议(如下所建议)运行以下命令: $ sudo chown YOUUSERNAME:staff ~/.config/configstore/bower-github.json ~/.config/configstore/update-notifier-bower.json - aemonge
我尝试了第一个评论,我的用户拥有该文件,而组是staff。我该如何解决这个问题以备将来之需? - RyanCameron.Me
我认为按照下面所述的更改权限是正确的解决方法。 - PlunkettBoy

43

更改 .config 和 cache 目录的所有权

sudo chown -R username:username ~/.config 

以及

sudo chown -R username:username ~/.cache

2
我使用了你的代码,但进行了修改。sudo chown -R username ~/.config sudo chown -R username ~/.cache 去掉冒号后面的“username”,我的代码可以正常工作。那么这个冒号的作用是什么呢? - Tyler Davis
4
这是个好的解决方案,谢谢。你也可以使用用户别名:sudo chown -R $USER ~/.config和sudo chown -R $USER ~/.cache。 - Liko
1
@TylerDavis指定格式为username:usergroup,其中usergroup可能有多个用户。但默认情况下未创建usergroup,因此您的命令能够执行成功。 - Zeel Shah
1
我不小心以root身份安装了bower和npm,长时间以来一直无法在没有sudo/--allow-root的情况下运行它们。这个方法解决了我的问题,非常感谢。 - Ryan
@Tyler Davis,你救了我的一天! - rcat24

35

我注意到你是从MacBook Pro上尝试了这个操作。

你可以试试以下步骤:

  • 打开Finder
  • 在菜单下面选择前往文件夹,然后输入:~/.cache/bower
  • 删除该文件夹中的内容,然后重试。

另外,正如@Edwin建议的那样:

运行命令bower cache clean,无论使用哪种操作系统都会产生相同的效果。


谢谢,我在使用Ember-CLI时遇到了类似的问题,安装停止了,因为bower无法重命名tmp目录。按照您的建议操作后,一切都正常工作了。再次感谢 :) - Vageesh Bhasin
4
另外,无论操作系统如何,使用命令“bower cache clean”都会产生相同的效果。 - Edwin Dalorzo
"bower cache clean" 仍然会抛出错误,必须使用 "cd" 命令进入缓存文件夹并手动删除。 - Christopher Marshall
和Christopher一样的问题,我也需要删除目录。奇怪的是,bower cache clean在过去曾经对我有用,但是我最近更新了很多东西,所以可能bower在这方面发生了变化。 - Eric Soyke

10

我不确定我的项目发生了什么事情,但为了解决与Bower相关的问题,我必须运行以下命令。

sudo npm install -g bower

sudo bower cache clean --allow-root 

rm -Rf bower_components

sudo bower install --allow-root

我还不太确定到底出了什么问题,但在执行了那些命令后,我就可以使用了。


我尝试了以上所有方法,只有这个对我有效!非常感谢! 附言:为什么会发生这种情况?我的工作项目突然崩溃了。我没有做任何更改... - MadPhysicist

6

1) 运行

$groups

获取您的群组名称

2) 然后运行

$sudo chown -R {user}:{group} ~/.config 
$sudo chown -R {user}:{group} ~/.cache

其中{user}代表用户名,{group}代表组名


可能对运行也有帮助 $sudo chown -R {user}:{group} ~/.cache - joninx
我写的和这有什么不同? - Renat Gatin
复制粘贴问题。我不是指.cache,我是指~/.npm - joninx

4

我遇到了同样的问题,发现bower_components文件夹是由root用户拥有的。我改变了所有权为我的用户,一切都正常工作,而不必以root身份运行bower。

sudo chown -R $USER bower_components

3

就像每个人所说的那样,不应该使用sudo来运行bower和npm。

这对我在我的OSX机器上解决了问题。

sudo chown -R $USER:$GROUP ~/.npm
sudo chown -R $USER:$GROUP ~/.config

现在你应该可以运行以下命令:
npm install
npm start 

甚至更多

bower install

无需使用sudo。

*注意:npm start通常会调用bower install。


可能对运行也有帮助 $sudo chown -R {user}:{group} ~/.cache - joninx

0

我也遇到了同样的问题,但是上面的方法都没有解决我的问题。如果你最近更新了Xcode并且不认识这个问题,请不要忘记同意条款并安装命令行工具!

xcode-select --install


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接