EACCES:权限被拒绝,无法删除

33

我无法使用命令yarn install启动我的React.js项目。 收到错误:

error /Users/lera/Desktop/beam-web/node_modules/sharp: 
Failed to auto-install node-gyp. Please run "yarn global add node-gyp" manually. 
Error: "EACCES: permission denied, 
unlink '/Users/lera/.config/yarn/global/node_modules/.yarn-integrity'"

npm 5.0.3. node 8.1.4. yarn 0.24.5 macOS Sierra 10.12.4

再次运行命令时,它会安装软件包,但在运行yarn run dev命令后,显示如下:

Cannot find module '../build/Release/sharp.node'

我尝试通过 yarn add sharp 添加 sharp,但是收到了同样的错误。EACCES: permission denied


@msanford ls -la /Users/lera/Desktop/beam-web/ - 显示我的项目结构。 whoami - lera。 - Valeria Shpiner
我相信它展示了你的项目结构,我想知道的是第三列的输出是什么。它是否与每个条目特别是“node_modules”的用户名匹配? - msanford
1
@msanford 是的,它匹配了。 - Valeria Shpiner
1
@msanford 是的,对于 node_modules 也是这样。 - Valeria Shpiner
1
你的 node_modules 文件夹权限是什么?你能否编辑你的问题并粘贴 ls -la /Users/lera/Desktop/beam-web/ | grep node_modules 的输出吗?这样可以避免在评论中进行长时间的讨论 :) - msanford
显示剩余5条评论
5个回答

46

首先,您需要运行以下命令检查权限:

ls -la ~/.config/yarn/global/node_modules/.yarn*

我收到了以下回复:

-rw-r--r-- 1 root staff 15163 Jul 18 15:17 ~/.config/yarn/global/node_modules/.yarn-integrity

如果你发现 root 有权限,而你没有,则需要给自己添加权限

sudo chown -R ${USER} ~/.config/yarn/

4

如何在 Mac 上更改文件、文件夹或磁盘的权限

权限设置决定了谁可以查看和修改计算机上的文件。您可以在 Finder 中的文件、文件夹或磁盘的 Info 窗口底部更改权限设置。例如,您可以更改文件夹的权限设置,以便其他登录到 Mac 或连接到其进行文件共享的用户可以查看但无法更改文件夹中的文件。

Info 窗口底部的权限设置。

为用户和组分配权限

在 Mac 上,选择磁盘、文件夹或文件,然后选择文件 > 获取信息。

如果“共享与权限”中的信息不可见,请单击箭头。

如果右下角的锁定已锁定,请单击它以解锁 Get Info 选项,然后输入管理员名称和密码。

单击名称列中的用户或组,然后从弹出菜单中选择权限设置。

读与写:允许用户打开该项目并更改它。

只读:允许用户打开该项目,但不能更改其内容。

仅写入(投递箱):将文件夹变成投递箱。用户可以将项目复制到投递箱中,但无法打开它。只有投递箱的所有者才能打开它。

无访问:阻止所有对该项的访问。

您可以撤销自打开 Info 窗口以来共享和权限部分中针对某个用户或组所做的任何权限设置更改。在关闭 Info 窗口之前,单击操作弹出菜单,然后选择“还原更改”。

将权限应用于文件夹或磁盘中的所有项目

在 Mac 上,选择文件夹或磁盘,然后选择文件 > 获取信息。

如果右下角的锁定已锁定,请单击它以解锁 Get Info 选项,然后输入管理员名称和密码。

单击操作弹出菜单,然后选择“应用于封闭项目”。

更改项目的所有者

在 Mac 上,选择该项目,然后选择文件 > 获取信息。

如果右下角的锁定已锁定,请单击它以解锁 Get Info 选项,然后输入管理员名称和密码。

如果新所有者的名称未列在共享和权限部分的名称列中,请单击添加按钮以添加新所有者。

在名称列中选择新所有者,单击操作弹出菜单,然后选择“使__成为所有者”。

您可以撤销自打开 Info 窗口以来共享和权限部分中所做的任何项目所有者更改。在关闭 Info 窗口之前,单击操作弹出菜单,然后选择“还原更改”。

在名称列中添加或删除用户或组

在 Mac 上,选择一个项目,然后选择文件 > 获取信息。

如果右下角的锁定已锁定,请单击它以解锁 Get Info 选项,然后输入管理员名称和密码。

在共享和权限部分,进行以下任一操作:

添加用户或组:点击列表下方的 添加 按钮,选择一个用户或组,然后点击 选择。

删除用户或组:选择用户或组,然后点击列表下方的 删除 按钮。

您可以在打开信息窗口后在“共享和权限”部分撤消添加或删除用户或组。在关闭信息窗口之前,点击操作弹出菜单,然后选择"还原更改"。

enter image description here

2

我尝试使用sudo yarn获取权限,这对我有用。

尝试使用sudo yarn代替yarn install


1

改变特定文件的权限或者简单地使用sudo运行install命令可能看起来是一个快速解决方法,但是让我们深入探讨一下为什么会出现这个问题以及如何解决:

理想情况下,对于一个简单的yarn install,你不应该需要管理员权限。这种情况出现的原因很可能是由于存在某些以root(管理员)级别权限生成的文件。这通常发生在你尝试使用sudo执行命令时。

如果你发现自己处于这种情况中,最直接的解决方案是重新开始:

  • 运行sudo git clean -fdx来消除所有未跟踪的文件。在这里使用sudo的必要性来自于你需要管理员级别的访问权限来删除具有类似权限的文件。

  • 接下来,运行yarn install

这样应该能够解决问题,而无需使用提升的权限。


-2

首先检查一下你的当前目录是否与 package.json 文件在同一个目录下,如果不在同一个目录下就会出现这个错误...


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