Yarn: Windows因EPERM失败:不允许操作,所有文件均为只读

创建于 2016-10-13  ·  44评论  ·  资料来源: yarnpkg/yarn

您要请求_feature_还是报告_bug_?
虫子

目前的行为是什么?
对纱线执行任何操作(例如添加)时,将出现以下错误:

EPERM: operation not permitted, open 'C:\foo\node_modules\firebase\app-node.js'
at Error (native)

如果当前行为是错误,请提供重现步骤。

  1. 使用Windows :(
  2. 用纱
  3. 失败

要解决此问题,请右键单击node_modules文件夹,然后取消选中“只读”。 等待。 重新运行yarn命令。 现在它像魔术一样起作用了! 完成纱线操作后,所有文件均恢复为只读状态。

预期的行为是什么?
不必将文件标记为可读。

请提及您的node.js,yarn和操作系统版本。
节点v6.3.1
纱线v0.15.1
Windows 10(周年纪念版)

cat-bug os-windows triaged

最有用的评论

遇到此错误,因为我试图在节点服务器运行时执行yarn命令。 哎呀! 有人。

所有44条评论

要解决此问题,请右键单击node_modules文件夹,然后取消选中“只读”。

是Yarn将node_modules标记为只读,还是其他方式? 我无法使用全新的应用程序(即yarn init && yarn add react )在Windows上进行复制

@ Daniel15

您能在干净的目录中尝试一下吗?

yarn init
yarn add firebase
yarn add react

最后一条命令给我:

C:\Dev\yarntest>yarn add react
yarn add v0.15.1
[1/4] Resolving packages...
[2/4] Fetching packages...
[3/4] Linking dependencies...
error EPERM: operation not permitted, open 'C:\Dev\yarntest\node_modules\firebase\app-node.js'
    at Error (native)
info Visit http://yarnpkg.com/en/docs/cli/add for documentation about this command.

我不确定firebase软件包是否有此功能?

为了澄清; 我尝试了相同的步骤,但使用react和eslint并没有看到相同的错误。

感谢您的信息! 我可以在Windows上复制该问题,但不能在Debian Linux上复制。

我会说这更多是“严重错误”,因为它甚至在使用firebase模块的任何项目中都无法使用Yarn。

递归删除_read-only_标志是可行的,但只是暂时的。 即使只运行yarn也会重新运行整个linking dependencies阶段,并返回这些_read-only_标志。

使用yarn init创建新项目并安装任何单个依赖项集_read-only_标志到node_modules开始的所有目录(不是文件)。 但是,在firebase模块的情况下,由于某种原因,文件也是_read_only_。 使用NPM进行相同的操作不会将_read_only_设置为文件。

是的,这很烦人。

@ Daniel15
我安装了该软件包的另一个问题是,在安装后的步骤中,它设置了chmod some-file 400 ,而某些操作yarn对该文件失败,并出现类似的错误(如果我将权限设置为644,它可以正常运行)。 因此,我希望您能解决原始问题,而我的问题也不会解决。

@Tapppi问题引用)

PS关于#992,您可能可以编写一个oneliner“后安装”脚本来在每次安装后修复权限。

那会抹掉Yarn的用处,你不觉得吗? 删除那些只读标志会使Yarn再次执行整个链接过程。 只有性能节省才需要使用缓存,而不是每次都通过网络下载。

@FredyC我看不到安装后脚本如何消除纱线的用处? 安装时,它仍可能比npm快许多倍,并且具有锁定文件。 如果那使纱线对您不受欢迎,我认为就目前的形式而言,纱线还是不受欢迎吗?

也遇到这种情况。 我的项目没什么特别的,我现在通过吹掉我的node_modules文件夹来购买新软件包来解决它。

希望这个问题能尽快解决,谢天谢地的纱线是如此之快! ;)

好吧,这很有趣。 如果您下载firebase模块的实际压缩包,则这些只读属性已经存在! ... https://registry.npmjs.org/firebase/-/firebase-3.4.1.tgz

这意味着这并非完全是纱线故障。 我认为NPM所做的不同是在安装时实际上删除了该标志。 从本质上讲,这可能是Yarn也应该做的解决方案,因为您永远不知道其他什么模块会受到这种影响。

我实际上已经尝试将自己的软件包发布

因此,我向Firebase提出了支持请求,以查看他们在发布过程中是否可以更改某些内容。

我们能否希望在将来的Yarn版本中使用NPM方法或其他方式处理这种情况。

仅供参考,如果您先删除Firebase,然后添加所需的程序包,最后再添加Firebase,它也将起作用。 那么在删除Firebase时,Yarn是否会更新权限?

@ vijay-stayntouch不,Yarn对此没有任何作用。 主要问题是,如果您的Firebase带有只读标志,并且由于某些原因必须执行“链接依赖项”过程,则它无法接触这些文件,并且会失败。 尽管我不太确定,但是Yarn实际上有可能使用只读标志删除那些文件。

嘿,这里的Firebase工程师。 我们将通过确保下一个版本不再包含只读文件来解决此问题。 话虽如此,这看起来确实是意外的行为,并且很可能应该在npm中全面修复Yarn。 谢谢!

这是与#872相同的问题吗?

对于对此有麻烦的每个人来说都是个好消息。 有一个新的firebase模块3.6.2,没有只读标志,并且现在可以正常工作。

我建议以#961结尾关闭该代码,该代码更通用,并且仅与Yarn相关。

@FredyC好消息!

问题仍然悬而未决:是否还有其他软件包将其代码设为只读。 同样的问题将再次发生。

@ vijay-stayntouch是的,这就是#961应该真正尝试解决的问题。

我对yarn add react-hot-loader --dev有同样的问题:

yarn add v0.20.3
[1/4] Resolving packages...
[2/4] Fetching packages...
warning [email protected]: The platform "linux" is incompatible with this module.
info "[email protected]" is an optional dependency and failed compatibility check. Excluding it from installation.
[3/4] Linking dependencies...
error An unexpected error occurred: "EPERM: operation not permitted, utime '/home/syd/Work/taxibs/zaher/node_modules/source-map/README.md'".
info If you think this is a bug, please open a bug report with the information provided in "/home/syd/Work/taxibs/zaher/yarn-error.log".
info Visit https://yarnpkg.com/en/docs/cli/add for documentation about this command.

我正在执行yarn cache clean并再次执行yarn add ... ,但问题仍然存在。
我在Ubuntu 16.04上
节点v6.9.4和npm v3.10.10

我遇到了同样的问题-唯一可行的解​​决方案是使用rimraf node_modules删除node_modules文件夹,然后使用yarn重新安装所有软件包。

我经常发现使用npm或yarn安装软件包的问题,​​我的解决方法是转到文件管理器,右键单击/ node_modules主文件夹,选择属性,然后取消选中“只读”。 您也可以在命令行中使用attrib来执行此操作。 然后,重试安装即可。

遇到此错误,因为我试图在节点服务器运行时执行yarn命令。 哎呀! 有人。

尝试提供多种解决方案(包括只读的取消选中)-不起作用
版本
节点v6.11.1
纱v0.27.5
Windows 10

错误:“ EPERM:不允许操作,取消链接'D:\ urp \ node_modules \ node-sass \ vendor \ win32-x64-48 \ binding.node”

_ran:_
$ yarn check --integrity

_收到:_
错误锁文件不包含模式:“ material-ui@^0.19.0”
错误锁文件不包含模式:“ [email protected]
错误锁文件不包含模式:“ npm-run-all@^4.1.1”
错误锁文件不包含模式:“ react@^15.6.1”
错误锁文件不包含模式:“ react-dom@^15.6.1”
错误锁文件不包含模式:“ react-router-dom@^4.2.2”
错误锁文件不包含模式:“ react-tap-event-plugin@^2.0.1”
错误找不到完整性文件

任何帮助都会很棒!

是的,在Win中执行时有时会很糟(例如在Win中开发Ionic2 / 3,永久地抛出EPERM错误,例如安装/ mod npm包和其他东西); 它可能被防病毒软件引用; 从所有node_modules取消选中read only attr;
另外,尝试将.npmrc文件添加到您的forlder(c:/ users /)内容unsafe-perm=true ; 将相同的文件添加到项目的根目录; 不得已:以管理员身份运行powershell并用Start-Process powershell -Verb runAs提升-将打开新的提升的powershell窗口,该窗口应该能够运行

在Windows上,请确保以“以管理员身份”运行命令提示符。 :: facepalm ::

尝试了此处列出的所有内容-我能够解决的唯一方法是:

npm install -g rimraf
rimraf node_modules

如@domjtalbot所建议。

当您有两个纱线实例试图在不同项目中安装软件包时,也会发生这种情况

我也是npm 5.8.0,@ domjtalbot和@ James-E-Adams指出了唯一的一项工作

当我的服务器运行nodemon ,然后添加软件包yarn add bcrypt时,我遇到了同样的问题。 使用@rmorrise的注释可以解决我的问题。永远不知道服务器的运行会影响安装。

如果yarn可以检测到这种情况并抛出有意义的警告,则@rmorrise +1是合乎逻辑的。

有关信息:取消软件包(ctrl + c)的安装并尝试随后再安装另一个软件包后,我遇到了同样的问题。 我也有一个正在运行的服务器,但是之前添加其他软件包时并没有引起错误。

download (1)

现在,我已经多次遇到此错误,只有重新启动Windows才有帮助。

我遇到了同样的问题。 导致此错误的原因是在Windows bash的ubuntu中运行create-react-app开发服务器。 停止服务器即可解决问题。

download (1)

现在,我已经多次遇到此错误,只有重新启动Windows才有帮助。

通常,我更喜欢不赞成这样的答案,但这实际上是唯一对我有用的东西。

download (1)

现在,我已经多次遇到此错误,只有重新启动Windows才有帮助。

这确实对我有用。

至少对我来说,这似乎是由打开vscode引起的。

确保在npm install之前关闭您的应用程序(角度,反应等)。

@ScottGuymer

我不敢相信这行得通

谢谢您的解决方案

@Gameghostify我要么😄

别客气。

检查您是否正在运行节点进程,如果已关闭则将其关闭,然后重试

我是从vscode终端运行yarn的,所以我重新启动了vscode,就可以了

是的,在Win中执行时有时会很糟(例如在Win中开发Ionic2 / 3,永久地抛出EPERM错误,例如安装/ mod npm包和其他东西); 它可能被防病毒软件引用; 从所有node_modules取消选中read only attr;
另外,尝试将.npmrc文件添加到您的forlder(c:/ users /)中,内容unsafe-perm=true ; 将相同的文件添加到项目的根目录; 不得已:以管理员身份运行powershell并用Start-Process powershell -Verb runAs提升-将打开新的提升的powershell窗口,该窗口应该能够运行

确实有效。 谢谢。

@ Gayathri-K-2000您能否提供更多详细信息? 我面临着同样的问题,但是没有用。 请提供您可能采取的措施的示例。 谢谢!

@ Gayathri-K-2000您能否提供更多详细信息? 我面临着同样的问题,但是没有用。 请提供您可能采取的措施的示例。 谢谢!

我未选中节点模块属性中的“只读”,并以管理员身份运行cmd。 有用。

检查您是否正在运行节点进程,如果已关闭则将其关闭,然后重试

这的确是我的问题。 React应用程序也是如此,例如,当系统提示您安装node-sass -您无法在应用程序运行时执行此操作。 谢谢大家!

此页面是否有帮助?
0 / 5 - 0 等级