<p>纱线安装失败,出现“ ENOENT:偶尔没有这样的文件或目录”</p>

创建于 2017-02-04  ·  173评论  ·  资料来源: yarnpkg/yarn

在基于node:7Docker映像的构建步骤中,运行yarn install在Travis CIENOTEMPTYEEXISTSwebdriverio软件包似乎总是出错。

yarn install v0.19.1
[1/4] Resolving packages...
[2/4] Fetching packages...
error An unexpected error occurred: "https://registry.yarnpkg.com/webdriverio/-/webdriverio-4.6.2.tgz: ENOENT: no such file or directory, open '/usr/local/share/.cache/yarn/npm-webdriverio-4.6.2-dd095ee618896a21c8f1b9d4278736d85a64ca0f/lib/protocol/timeouts.js'".

当Travis在安装阶段运行yarn install ,它可以正常工作。 该错误仅在构建Docker映像时发生。

重现此问题的回购

节点数:7
操作系统:Docker + Travis CI
纱:0.19.1
package.json
纱锁

我试过用npm install -gapt安装yarn,这两种方法都会导致Travis失败。

足够奇怪的是,该映像已成功在我的本地计算机上成功构建,该计算机运行的Ubuntu 16.04.1 LTS和Docker版本为1.13.0,版本49bf474。

cat-bug

最有用的评论

带有--network-concurrency 1@bestander不会出现该错误(如果没有,则每次都会出现)。
但是此参数的默认值是多少? 无论我为它选择哪个值(1、2、4、8),它都可以工作,而如果我根本不放,它就会失败……

所有173条评论

有趣的是,它仅在Travis上失败,但是在本地测试时可以工作吗? 考虑到Docker应该确保环境一致,这非常奇怪。

@ Daniel15我知道了...

我将节点降级到版本6,但在Travis上仍然失败。 我将--verbose标志添加到yarn install ,我得到的只是

verbose Performing "GET" request to "https://registry.yarnpkg.com/spawn-wrap/-/spawn-wrap-1.3.4.tgz".
verbose Performing "GET" request to "https://registry.yarnpkg.com/yargs/-/yargs-6.6.0.tgz".
verbose Performing "GET" request to "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-4.2.1.tgz".
verbose Performing "GET" request to "https://registry.yarnpkg.com/fibers/-/fibers-1.0.15.tgz".
verbose Performing "GET" request to "https://registry.yarnpkg.com/selenium-standalone/-/selenium-standalone-5.11.2.tgz".
verbose Performing "GET" request to "https://registry.yarnpkg.com/tcp-port-used/-/tcp-port-used-0.1.2.tgz".
verbose Performing "GET" request to "https://registry.yarnpkg.com/babel-runtime/-/babel-runtime-5.8.38.tgz".
verbose Error: ENOTEMPTY: directory not empty, rmdir '/usr/local/share/.cache/yarn/npm-webdriverio-4.6.2-dd095ee618896a21c8f1b9d4278736d85a64ca0f/lib/protocol'
    at Error (native)
error An unexpected error occurred: "ENOTEMPTY: directory not empty, rmdir '/usr/local/share/.cache/yarn/npm-webdriverio-4.6.2-dd095ee618896a21c8f1b9d4278736d85a64ca0f/lib/protocol'".

我对如何调试它的想法持开放态度。

降级到0.18.1似乎对我来说是固定的。 似乎0.19可能有回归; 参见#1834

我还遇到了纱线0.23.3的问题,这不是在生成图像时发生的,而是在运行某些CI时发生的。
错误如下:

$ time yarn --frozen-lockfile
yarn install v0.20.3
[1/4] Resolving packages...
[2/4] Fetching packages...
error An unexpected error occurred: "ENOTEMPTY: directory not empty, rmdir '/builds/linagora/petals-cockpit/yarncache/npm-@angular/core-4.0.0-beta.8-8d9c8a64e7c26ff7208404e716deea94bb509cd7/src'".
info If you think this is a bug, please open a bug report with the information provided in "/builds/linagora/petals-cockpit/frontend/yarn-error.log".
info Visit https://yarnpkg.com/en/docs/cli/install for documentation about this command.

real    0m9.812s
user    0m7.596s
sys 0m0.932s

我认为删除文件可能有一些奇怪的方法……

重要说明:缓存为空!

在我的机器上,如果我尝试进行复制,则会得到以下信息:

yarn install v0.20.3
[1/4] Resolving packages...
[2/4] Fetching packages...
error An unexpected error occurred: "http://docker0.gso.lan:8081/repository/npm/@angular/core/-/core-4.0.0-beta.8.tgz: EEXIST: file already exists, mkdir '/home/vnoel/.cache/yarn/npm-@angular/core-4.0.0-beta.8-8d9c8a64e7c26ff7208404e716deea94bb509cd7/src/metadata'".
info If you think this is a bug, please open a bug report with the information provided in "/home/vnoel/Linagora/Petals/dev/git/petals-cockpit-new/frontend/yarn-error.log".
info Visit https://yarnpkg.com/en/docs/cli/install for documentation about this command.

并采用纱线0.21.2:

yarn install v0.21.2
[1/4] Resolving packages...
[2/4] Fetching packages...
error An unexpected error occurred: "http://docker0.gso.lan:8081/repository/npm/@angular/core/-/core-4.0.0-beta.8.tgz: ENOENT: no such file or directory, lstat '/home/vnoel/.cache/yarn/npm-@angular/core-4.0.0-beta.8-8d9c8a64e7c26ff7208404e716deea94bb509cd7/bundles/core.umd.js'".
info If you think this is a bug, please open a bug report with the information provided in "/home/vnoel/Linagora/Petals/dev/git/petals-cockpit-new/frontend/yarn-error.log".
info Visit https://yarnpkg.com/en/docs/cli/install for documentation about this command.

这太可怕了!

我同意@twooster关于0.18.1的工作正常!

@ Daniel15它在本地也不起作用。 实际上,当缓存对我来说是空的时候,它永远都行不通!

@victornoel最近的错误可能是https://github.com/yarnpkg/yarn/issues/2714

@bestander,我当时尝试了0.19.1,但没有成功…

我重试了,现在是错误:

  • 不会显示为空,但是在以下情况下会出现(我真的希望它是可重现的…):

    • rm -rf纱线缓存

    • 克隆https://gitlab.com/linagora/petals-cockpit.git

    • 结帐5f31ccb4b2357201baa50539b30702cffceb6992

    • frontend目录中运行yarn

    • 结帐大师

    • frontend目录中再次运行yarn

    • 我得到: error An unexpected error occurred: "http://docker0.gso.lan:8081/repository/npm/@angular/core/-/core-4.0.0-rc.1.tgz: ENOENT: no such file or directory, utime '/home/vnoel/.cache/yarn/npm-@angular/core-4.0.0-rc.1-7f87b7696b407476e45d6d3c1880a50d5afbb6e3/@angular/core/testing.js'". (我正在使用自己的注册表,但是没有它也会发生同样的情况)

  • 确实出现在纱线0.21.2、0.19.1而非0.18.2

所以我不一样,我们希望您至少可以重现它……

(实际上,我只是再试一次,并使用了空的缓存和0.20.2的纱线重现了该错误,但以前不是这种情况,也许其他地方有另一个文件是此问题的根源,并且不在缓存?)

@bestander,我将在#2744作为夜间版本可用后立即测试纱线:)

如果可以帮我,请给我打电话。
最好的措施是发送带有损坏(和跳过)的端到端测试的PR。

@bestander好吧,不,我仍然收到诸如以下错误:


➜  frontend git:(master) ✗ yarn
yarn install v0.22.0-20170227.1509
[1/4] Resolving packages...
[2/4] Fetching packages...
error An unexpected error occurred: "https://registry.yarnpkg.com/@angular/core/-/core-4.0.0-rc.1.tgz: ENOENT: no such file or directory, lstat '/home/vnoel/.cache/yarn/npm-@angular/core-4.0.0-rc.1-7f87b7696b407476e45d6d3c1880a50d5afbb6e3/typings/src/facade/lang.d.ts'".

要么:

➜  frontend git:(master) ✗ yarn
yarn install v0.22.0-20170227.1509
[1/4] Resolving packages...
[2/4] Fetching packages...
error An unexpected error occurred: "https://registry.yarnpkg.com/typescript/-/typescript-2.2.1.tgz: ENOENT: no such file or directory, lstat '/home/vnoel/.cache/yarn/npm-typescript-2.2.1-4862b662b988a4c8ff691cc7969622d24db76ae9/lib/typescriptServices.js'".

我将看看是否可以进行e2e测试。

无论如何@bestander我可以得到错误的完整stacktrace吗?

我只在yarn-error.log中看到这一点:

Trace: 
  Error: http://docker0.gso.lan:8081/repository/npm/@angular/core/-/core-4.0.0-rc.1.tgz: ENOENT: no such file or directory, lstat '/home/vnoel/.cache/yarn/npm-@angular/core-4.0.0-rc.1-7f87b7696b407476e45d6d3c1880a50d5afbb6e3/@angular/core.es5.js'
      at Error (native)

那有点没用:)

详细的错误是:

{ Error: http://docker0.gso.lan:8081/repository/npm/@angular/core/-/core-4.0.0-rc.1.tgz: ENOENT: no such file or directory, lstat '/home/vnoel/.cache/yarn/npm-@angular/core-4.0.0-rc.1-7f87b7696b407476e45d6d3c1880a50d5afbb6e3/@angular/core.js'
    at Error (native)
  errno: -2,
  code: 'ENOENT',
  syscall: 'lstat',
  path: '/home/vnoel/.cache/yarn/npm-@angular/core-4.0.0-rc.1-7f87b7696b407476e45d6d3c1880a50d5afbb6e3/@angular/core.js',
  fstream_type: 'File',
  fstream_path: '/home/vnoel/.cache/yarn/npm-@angular/core-4.0.0-rc.1-7f87b7696b407476e45d6d3c1880a50d5afbb6e3/@angular/core.js',
  fstream_class: 'FileWriter',
  fstream_stack: 
   [ '/home/vnoel/Linagora/Petals/dev/git/yarn/node_modules/fstream/lib/writer.js:285:28',
     '/home/vnoel/Linagora/Petals/dev/git/yarn/node_modules/graceful-fs/polyfills.js:284:29',
     'FSReqWrap.oncomplete (fs.js:123:15)' ] }

不知道该怎么办...确切发生在package-fetcher.js ,第56行,但是我很难找到来源...

这看起来很愚蠢,但是我觉得只有当我的网络npm镜像(公司中的声纳联系)镜像了@angular/core人工制品时,它才会失败。 如果没有,那么一切会顺利进行,然后在已经被镜像的另一个伪像上失败(在这种情况下typescript )。

如果我用手从神经反射镜上去除假象,它就起作用了!

所以……如果事情到达的太快,这有点像纱线无法跟上^^,因为当我使用正常的npm注册表而不使用我的镜像时,事情通常会进行得很好(我们的网络连接很慢)。
它可以解释为什么CI系统经常失败,因为它们通常具有非常快的Internet连接…

得出这样的结论有点困难,但这可以帮助找到问题的根源。
WDYT @旁观者?

作为记录,我认为该错误是由于获取管道中的tar.Extract步骤引起的,但我不确定^^

感谢您研究更多@victornoel ,您可能会在这里遇到问题。

我可以从https://github.com/yarnpkg/yarn/issues/2629#issuecomment -282745896复制场景。
看着它。

我懂了

error An unexpected error occurred: "https://registry.yarnpkg.com/typescript/-/typescript-2.2.1.tgz: ENOENT: no such file or directory, lstat '/Users/bestander/Library/Caches/Yarn/npm-typescript-2.2.1-4862b662b988a4c8ff691cc7969622d24db76ae9/lib/typescriptServices.js'".

但是,如果我一次又一次尝试yarn install ,它将最终完成安装。
爆炸.tgz文件似乎以错误结束。

更新:

  • .tgz看起来不错,我可以手动解压缩在获取阶段失败的那个
  • 我想知道tar软件包是否由于某种原因抛出此错误,这可能是并发吗?

欢迎一些帮助调查为什么解开这几个依赖关系(在我的情况下是打字稿和angular-core)会导致错误的原因。
并发? https://github.com/npm/node-tar中的错误

@victornoel ,您可以使用yarn install --network-concurrency 1复制错误吗?

带有--network-concurrency 1@bestander不会出现该错误(如果没有,则每次都会出现)。
但是此参数的默认值是多少? 无论我为它选择哪个值(1、2、4、8),它都可以工作,而如果我根本不放,它就会失败……

默认值为15,我可以使用https://gitlab.com/linagora/petals-cockpit.git#075bac4c54fee466568c000c7ffe8025f593e212的干净结帐来复制并发15的问题。

好消息! 迈向解决方案和解决方法的第一步:)

一些结果。

TL; DR我不知道如何正确地对其进行永久性修复,这需要更深入的Node.js知识。

  1. 网络可以消除可能的问题。
    我已经为yarn.lock中的.tgz文件设置了脱机镜像,并且可以重现从磁盘安装的软件包的问题。

问题出在tarball-fetcher代码的unzip / unar流中。

  1. 我尝试了另一个提取tar的库-https: //github.com/mafintosh/tar-fs与当前的https://github.com/npm/node-tar/。 他们都以相同的方式失败。
    更深入一点-执行多个mkdirp操作时节点中会发生异常
Error: ENOENT: no such file or directory, chmod '/Users/bestander/Library/Caches/Yarn/npm-@angular/core-4.0.0-rc.1-7f87b7696b407476e45d6d3c1880a50d5afbb6e3/typings/src/di/injector.d.ts'
  errno: -2,
  code: 'ENOENT',
  syscall: 'chmod',
  path: '/Users/bestander/Library/Caches/Yarn/npm-@angular/core-4.0.0-rc.1-7f87b7696b407476e45d6d3c1880a50d5afbb6e3/typings/src/di/injector.d.ts' }

我认为core-4.0.0和typescript-2.2.1会失败,因为它们具有相当多的文件和较深的文件夹结构,并且在执行许多并发mkdir / copy操作时无法安装。

每次都有另一个失败的系统调用:chmod,rmdir,mkdir,lstat和utime。

在库的代码中这不是很明显。

  1. 在节点4、6和7上失败相同。

  2. 并发设置为8时,我无法重现该错误,因此我将发送PR来减少默认网络并发。


  1. 我想知道并发性如何影响安装速度。

5.1。 在我的MBPro 13上使用脱机镜像(不下载),清理缓存并使用node-tar解压缩文件。
并发12-失败
并发8-18秒
并发4-18秒
并发2-21秒

5.2。 在我的MBPro 13“上使用脱机镜像(不下载),清理缓存并使用tar-fs解压缩文件。
并发12-15秒
并发8-15秒
并发4-17秒
并发2-18秒

5.3。 从Internet上的MBPro 13“上下载程序包,清理缓存并使用tar-fs解压缩文件。
并发12-一次失败
并发8-21秒
并发4-23秒
并发2-34秒

看起来将并发设置为8是足够安全的,并且切换tar库也很有意义。
我会跟进公关。

解决此问题的正确方法是派生https://github.com/mafintosh/tar-fs并执行更智能的fs操作,例如,对每个文件夹仅使用mkdir一次

tar-fs维护者似乎很活跃,也许我们可以在那打开一个问题,看看他们对此有什么了解/提出什么建议?

@victornoel ,你愿意吗?

@bestander完成了! mafintosh / tar-fs#61 :)

在jenkins的构建代理上测试yarn时,在某种类似的情况下遇到了此错误消息。

您知道触发此错误的条件是什么吗? 我想用yarn替换构建系统的npm调用,以提高速度,但是如果我必须禁用并发性,我担心它可能会抵消那里的任何奖金。

@ProdigySim (在#2829中进行了解释(已合并到yarn master中)),减少网络并发对纱线的性能没有太大影响。 您只需将其设置为8,就可以了。 无论如何,即使一次下载8个依赖项,我也不确定大多数驱动器是否会遵循吞吐量,因此您肯定不会放松很多:)

@victornoel感谢您提供信息。 我不确定减少--network-concurrency就我而言就足够了,因为我们还将并行运行多个yarn实例。

即使使用--network-concurrency 1 ,我也可以复制该问题,但是也许我应该为此另开一个问题?

使用上面提供的相同测试回购:

#!/bin/bash
set -x # echo commands

# Clear yarn cache
rm -rf $(yarn cache dir)

# Clone the repo into two separate spots
git clone https://gitlab.com/linagora/petals-cockpit.git repo1
git clone https://gitlab.com/linagora/petals-cockpit.git repo2

# Run yarn on both in parallel
cd repo1/frontend && yarn --network-concurrency 1 &
cd repo2/frontend && yarn --network-concurrency 1 &

这每次都会给我带来错误(到目前为止,有4个为4)

error An unexpected error occurred: "https://registry.yarnpkg.com/@angular/core/-/core-4.0.0-rc.2.tgz: 
ENOENT: no such file or directory, lstat '/Users/<snip>/Library/Caches/Yarn/npm-@angular/core-4.0.0-rc.2-59535050e5d0e6141417186eee571296f8e9c3d0/@angular/core.es5.js'".

在纱线0.21.3上,节点v4.5.0,OSX 10.11.6

到目前为止,我仅通过将纱线包含在永远不会并行运行的构建作业中,或者使用完全不同的软件包集就可以解决此问题,但是即使如此,我仍不确定它是否安全-因此询问关于此错误的根本条件。

@ProdigySim
这是一个单独的但相关的问题,由Yarn的全局下载缓存引起。 一种解决方法是为每个目录创建不同的缓存。

您仍然可以使用--network-concurrency 8 。 (实际上我没有无限的网络并发问题。)

这里有更多上下文。

@bestander令人惊讶地是,今天,即使网络并发数为8,问题仍然出现(由tar触发的新版本的angular ^^),但仅在我的CI上……我将其移至2并成功了(但我没有)我真的很在乎是否需要花几秒钟的时间来下载依赖项,所以现在还可以。
我们似乎没有从tar-fs项目获得反馈……我们还能联系谁寻求帮助?

Travis构建于OS X的版本上也遇到了这个问题。我已经清除了缓存并设置了网络并发性,但是没有任何帮助。

您将网络并发设置为@kevingelion的值是多少? 大刀阔斧,设置类似2的东西,看看问题是否出在这个:)

@victornoel我将其设置为1和2,这两个选项均导致失败。 我用了yarn --mutex network ,也没有骰子。

@bestander以下hack修复了(编辑:NOT)问题:

diff --git a/src/util/request-manager.js b/src/util/request-manager.js
index e0e134a2..995dac69 100644
--- a/src/util/request-manager.js
+++ b/src/util/request-manager.js
@@ -214,8 +214,7 @@ export default class RequestManager {
     }, params.headers);

     const promise = new Promise((resolve, reject) => {
-      this.queue.push({params, resolve, reject});
-      this.shiftQueue();
+      this.execute({params, resolve, reject});
     });

     // we can't cache a request with a processor

显然,这不是解决方案,它完全绕过了请求管理器及其排队系统,但它表明问题出在此子系统上。

谢谢,维克多!

三月2017年18:07 24,维克多诺埃尔[email protected]写道:

@bestander https://github.com/bestander以下黑客修复了
问题:

差异--git a / src / util / request-manager.js b / src / util / request-manager.js
索引e0e134a2..995dac69 100644
--- a / src / util / request-manager.js
+++ b / src / util / request-manager.js
@@ -214,8 +214,7 @@导出默认类RequestManager {
},params.headers);

 const promise = new Promise((resolve, reject) => {

  • this.queue.push({params,resolve,reject});
  • this.shiftQueue();
  • this.execute({params,resolve,reject});
    });
 // we can't cache a request with a processor

显然,这不是解决方案,它完全绕过了请求管理器,
它的排队系统,但它表明问题出在此
子系统。

-
您收到此邮件是因为有人提到您。
直接回复此电子邮件,在GitHub上查看
https://github.com/yarnpkg/yarn/issues/2629#issuecomment-289102067或静音
线程
https://github.com/notifications/unsubscribe-auth/ACBdWF66L-NzAInx7Bhs6V7s7LKahxxUks5rpAZ1gaJpZM4L3JbX

谁没有,它不是:D但它确实可以改善一些情况

很抱歉误报,我太想报告我的发现了:)

它改变了事情,因为在我可以多次运行yarn之前,它永远不会成功下载angular-core依赖项或打字稿(总是这些),但是在那里第一次失败了,第二次成功了,我忘了删除我尝试之间的缓存,所以我认为它正在工作。

好吧,这取决于现在是否有时有效,有时却不可行(受到黑客攻击,所以这并不是完全错过,或者我的互联网连接现在太慢了……)

我在CI版本中也遇到了这个问题。 经过大量测试,我终于可以在本地复制了。

同样,它有时确实可以工作,但是它经常失败,并出现以下两个错误(这似乎使某处存在某种竞争状况):

  • ENOENT: no such file or directory, lstat 'cache/directory/some-file'
  • EEXIST: file already exists, mkdir 'package-name'

我将其隔离到一个软件包,该软件包可直接从GitHub上的私有存储库安装。 有趣的是,错误消息中引用的程序包始终是该程序包的依赖项(它始终是我们直接从GitHub安装的另一个程序包,尽管不是私有存储库)。 因此,似乎有一个复制案例是从私有GitHub URL安装程序包,这些URL具有从库(也不一定是私有)也已安装的子依赖项。

不确定这是否有帮助...我很乐意尽我所能来帮助您!

编辑:不确定这是否有帮助,但是顶层软件包以"git+ssh://[email protected]/org/package.git#v1.0.0"的格式列出,并且在错误中,正在下载的从属项看起来像是在https之上下载的网址为"https://codeload.github.com/org/package/tar.gz/ljasdf08i234098aifj"

我正在对此进行更多调查。
试图为并发tar-fs提取构建独立脚本,但我倾向于认为问题出在下载过程中tar文件损坏。

找到了,Doh。

https://github.com/yarnpkg/yarn/issues/2629#issuecomment -282745896的示例中,Yarn具有重复的软件包,这些软件包正在并行下载和提取。
重复的是@angular/core/-/core-4.0.0-rc.1typescript/-/typescript-2.2.1.tgz

通过高并发性,我们碰巧将并发提取到同一缓存文件夹中。
我将研究为什么Yarn不会对这两个数据进行重复数据删除并发送修复程序。

在OS或tar提取级别上没有魔力。

哈哈,干得好@bestander ,很高兴我们终于找到了问题!

很棒的工作@bestanderhttps://github.com/yarnpkg/yarn/pull/3090https://github.com/yarnpkg/yarn/pull/3106都使我们无法使用Yarn。

谢谢!

我在安装prop-types模块时遇到了这个问题。 每次我尝试安装时,它都会在其他文件名上显示。 对我来说,安装npm 5.0.2后问题就消失了

$ yarn add prop-types
yarn add v0.21.3
[1/4] Resolving packages...
[2/4] Fetching packages...
error An unexpected error occurred: "https://registry.yarnpkg.com/prop-types/-/prop-types-15.5.10.tgz: ENOENT: no such file or directory
....

$ npm -g install npm

# whoops, looks like npm installed itself to different location than apt-get did
$ npm -v 
3.5.2

# remove the cached link from shell so the right version can surface
$ hash -d npm
$ npm -v
5.0.2

$ yarn add prop-types
... properly installs prop-types as expected

@skylize这可能是偶然的

这导致我的Travis构建几乎每次都失败,并带有一些不同的软件包。 有解决方案吗?
error An unexpected error occurred: "https://registry.yarnpkg.com/apollo-client/-/apollo-client-1.8.0.tgz: ENOENT: no such file or directory, utime '/var/lib/jenkins/.cache/yarn/v1/npm-apollo-client-1.8.0-3b5d1976a06a0f82b2fc66fe71754868193dadb9/flow-typed/npm/webpack_vx.x.x.js'".

@Redmega
此处相同,但这可行:

yarn install --network-concurrency 1

您正在使用哪个版本? 这应该已经解决了...

2017年8月8日下午6:37,“ Ben Merckx”通知@ github.comécrit:

@Redmega https://github.com/redmega
此处相同,但这可行:

纱线安装--network-concurrency 1

-
您收到此邮件是因为有人提到您。
直接回复此电子邮件,在GitHub上查看
https://github.com/yarnpkg/yarn/issues/2629#issuecomment-321011749或静音
线程
https://github.com/notifications/unsubscribe-auth/AAJ0z5qFb7gSW4w14_RbFNjsn4sRYV78ks5sWI7hgaJpZM4L3JbX

@victornoel我在jenkins机器上使用v0.27.5 ,与我的本地机器相同。

请尝试每夜: https ://yarnpkg.com/en/docs/nightly

删除yarn.lock文件和yarn install对我来说解决了这个问题。

这也导致我的Jenkins构建偶尔失败。 通常,它会在第二次尝试后起作用,但稍后会再次失败。

@ajcrites @Redmega @headione @benmerckx如果遇到这种问题,您应该打开另一个问题。 此问题已经得到肯定的解决,因此即使出现一些类似的症状,您的问题也必须是其他问题。
我敢肯定,如果您打开另一个问题,您的问题就有更多的机会得到解决:)

我们有同样的问题,在Jenkins中使用Node 8.5并行构建软件包。 我们目前需要坚持0.27.5,直到发布1.0.2修复另一个错误。 但是仍然感谢您的支持和工作:)

@floric我在节点8.9.4的相同上下文(詹金斯+并行)中遇到相同的问题,您的问题是否已解决?

编辑:我将尝试使用8.11.1来查看它是否包括没有错误的最新版本的yarn。

@Niceplace,您可能想尝试--mutex选项: https: //yarnpkg.com/en/docs/cli#toc -concurrency-and-mutex

我们计划增加更好的按包锁定,以避免很快发生这种情况。

我在ENOENT: no such file or directory, chmodENOENT: no such file or directory, lstat都遇到间歇性错误,试图在启用了Yarn工作区的monorepo的根上运行yarn --mutex=network

这似乎并不一致,我会随机获得一个或另一个。 (1.6.0以及节点8.11.1和9.11.1)

具体来说,错误是:

error An unexpected error occurred: "ENOENT: no such file or directory, lstat '/Users/federicozivolo/test/packages/foobar/node_modules/detect-port-alt'".

error An unexpected error occurred: "ENOENT: no such file or directory, chmod '/Users/federicozivolo/test/packages/foobar/node_modules/jest/node_modules/.bin/jest'".

我正在运行Yarn 1.7.0,并且遇到类似的错误。 经过几次运行,Yarn最终设法安装了该软件包。

An unexpected error occurred: "ENOENT: no such file or directory, lstat '/home/nieltg/.cache/yarn/v1/npm-npm-registry-client-8.5.1-8115809c0a4b40938b8a109b8ea74d26c6f5d7f1/lib/dist-tags/fetch.js'".

编辑:
我使用了yarn --network-concurrency 1但是错误仍然出现在我身上。 这是error和yarn-error.log文件的另一个示例。

An unexpected error occurred: "ENOENT: no such file or directory, copyfile '/home/nieltg/.cache/yarn/v1/npm-core-js-2.5.7-f972608ff0cead68b841a16a932d0b183791814e/library/fn/date/now.js' -> '/mnt/c/Users/nieltg/Projects/React/React-16-Demo/node_modules/core-js/library/fn/date/now.js'".

我正在使用Yarn 1.7.0。 而且我可以确认同样的行为仍然发生在我身上。

这是完全随机的。 有时会发生,有时却不会。

我收到的最后一个是:

error An unexpected error occurred: "ENOENT: no such file or directory, lstat '/root/.yarn-cache/v1/npm-@storybook/addon-actions-3.4.5-ba0d0c0c74357c0852e0b890b40

我在Windows子系统(适用于Linux)上的Yarn 1.9.2中经常看到此错误。

今天,我们在Jenkins CI上遇到了类似的问题,即包装破损,管道并行运行yarn install 。 几天前玩的很好。
yarn install --network-concurrency 1 (如注释中所述)。 性能并没有下降太多:〜7秒->〜8秒。

为什么关闭了? 它仍然发生:

Toms-MacBook-Pro-2:design-to-code tommedema$ yarn install
yarn install v1.9.4
[1/4] 🔍  Resolving packages...
[2/4] 🚚  Fetching packages...
[3/4] 🔗  Linking dependencies...
error An unexpected error occurred: "ENOENT: no such file or directory, lstat '/Users/tommedema/projects/vg/design-to-code/packages/vgcli/node_modules/fs-extra'".
info If you think this is a bug, please open a bug report with the information provided in "/Users/tommedema/projects/vg/design-to-code/yarn-error.log".
info Visit https://yarnpkg.com/en/docs/cli/install for documentation about this command.
Toms-MacBook-Pro-2:design-to-code tommedema$ yarn install --network-concurrency 1
yarn install v1.9.4
[1/4] 🔍  Resolving packages...
[2/4] 🚚  Fetching packages...
[3/4] 🔗  Linking dependencies...
[4/4] 📃  Building fresh packages...
✨  Done in 24.85s.

请注意,在我的情况下,它在两个软件包中执行了yarn remove fs-extrayarn add fs-extra之后消失了,从而有效地升级了此依赖关系。

嗨,我想我发现了一些东西。

我很困惑一段代码,该代码使用fsrxjs递归地列出指定目录中的文件,我发现如果我不等待lstat ,它很可能会失败。在调用另一个lstat之前必须完成lstat调用。

我已经制作了一个简单的NPM软件包async-dirtree-test ,以测试您的环境是否受到此影响。 我正在使用WSL,但我发现在处理具有许多子目录的目录(例如node_modules ,它可能会失败,即使并发数量很少。

好吧,我仍然不知道此问题是否特定于WSL。 目前,我无法在Linux,Mac等其他环境中进行测试。

@nieltg我想分享一个观察意见,这可能有助于塑造其他一些观点。 我在WSL中使用Docker CE,在Windows中使用Docker for Windows,因此当我在WSL中使用Docker时,感觉像是本机,但实际上,该主机在Windows世界中本机运行(因此,我的Dockerfile实际上将/ c / foobar解析为c:/ foobar(在Docker引擎中)。 当我使用绑定时,这是非常相关的(在容器内部,我正在安装本地文件夹,以便容器内的/ usr / src最终位于c:/ src / foobar(尽管我的Dockerfile会将绑定显示为/ c / src / foobar:/ usr / src(请参阅路径中的自动翻译?)

这种区别很重要,因为如果我在容器中的那些本地文件夹之一中yarn install则会遇到与直接在WSL中发生的错误(不涉及Docker)。

另一方面......如果我只是mkdir /tmp/src && cp ./package.json /tmp/src/ && cd /tmp/src && yarn install ,一切都将成功完成,而我只能mv /tmp/src/node_modules /c/src/foobar/而我很好,所以这就是我目前的解决方法。 请注意, /tmp作为docker存储存在(对于操作系统,所有IO都像一个文件,因为它实际上是文件中的一个分区)。

我知道在这里涉及docker并不是一个理想的选择,但是这似乎表明快速的文件句柄可能是一个问题,因为IO本身并不是一个问题,并且可能会帮助其他人解决此问题。

...分心并过早提交。 无论如何,目前我的大脑不在其他地方,但是我稍后再回来,看看我是否可以使用您的方法和Docker设计一个测试来得出进一步的结论。

重新开启

最近,我们开始使用yarn 1.10.1看到相同类型的错误,并在Azure Devops(以前称为Visual Studio Team Services)中运行CI构建。

我可以说,失败的实际依赖关系似乎是最好的随机选择,但是yarn install间歇性地因ENOENT: no such file or directory, open '/usr/local/share/.cache/yarn........错误而崩溃。 一次构建将起作用,下一次它将失败。

yarn install --network-concurrency 1的变通办法似乎对我们有用。

@ Marclev78同样的错误,但yarn install --network-concurrency 1似乎对我不起作用

@ Marclev78在这里

Error: https://registry.yarnpkg.com/core-js/-/core-js-1.2.7.tgz: ENOENT: no such file or directory, utime 'C:\Users\grpsshagent\AppData\Local\Yarn\Cache\v1\npm-core-js-1.2.7-652294c14651db28fa93bd2d5ff2983a4f08c636\fn\string\pad-left.js'

在本地,一切正常。

我在这里只是想说我也看到了这个错误。

error An unexpected error occurred: "ENOENT: no such file or directory, chmod '/usr/local/opt/asdf/installs/nodejs/8.12.0/.npm/bin/atob'".

不幸的是,我认为我必须放弃我的全局节点二进制文件的yarn并返回到npm直到解决此问题。

可悲的是,这个问题最近也开始困扰我们的CI构建;(

@rainabba的建议对我WSL

我认为写入和读取操作的行为也不同。 即使遭到黑客攻击,我在调用节点的fs.writeFile时也经常会看到错误(虽然与bluebird混杂在一起)。 在每个实例中,我都可以在收到写入错误后立即确认文件存在。

我正在向fs.writeFile()发送一个字符串(XML文件内容),该字符串最终将调用以下内容,但是我不确定是否准备接受设置带有附加调试功能的自定义版本所需的挑战此C ++项目的输出,以便我可以根据节点或此C ++模块确切地确定正确的感觉。

底线是写操作没有失败,但是节点认为写操作是成功的,因此对我来说有意义的情况是c + plus模块成功了,但是在内部它检查文件并失败,然后报告感觉不到您回到了节点然后发生实际的写入,因此当我去检查文件时,该文件在那里并且错误没有意义。

https://github.com/nodejs/node/blob/master/src/node_file.cc#L1795

@bestander有什么办法可以重新打开该问题? 显然,这不是固定的,并且影响了很多人。

确认这仍然发生在yarn 1.12和Azure Pipelines中。

感谢您确认所有人。
看起来该错误有多种原因。
我将重新讨论该问题,但是需要社区帮助来调试此问题。

纱线1.11也会发生,但1.10不会发生

@bestander-相关吗? https://github.com/yarnpkg/yarn/issues/6312

如果是这样,那里有一些很好的复制工作

我也受到这个问题的影响。

Windows 10 / WSL

"ENOENT: no such file or directory, lstat '/mnt/c/Users/<username>/.cache/yarn/v4/<random_file_in_random_package>"

@limonte WSL出现了一段时间的错误,即在执行npm install / yarn install时会随机抛出类似的错误。 一次将大量文件复制到硬盘驱动器时,就是这种情况。 请确保您使用的是最新的Windows版本(1809或更高版本),因为它可能不是由纱线本身引起的。

我们还看到了Extracting tar content of undefined

error https://registry.yarnpkg.com/eslint/-/eslint-4.19.1.tgz: Extracting tar content of undefined failed, the file appears to be corrupt: "ENOENT: no such file or directory, stat '/tmp/yarncache.KTKNZ/v4/npm-eslint-4.19.1-32d1d653e1d90408854bfb296f076ec7e186a300/node_modules/eslint/lib/rules/no-compare-neg-zero.js'"

到目前为止,我们仅使用一个并发网络连接(选项--network-concurrency 1来缓解这种情况。 但这只是一个临时解决方案。

我也可以在node:11.5.0-alpine上确认问题。

error An unexpected error occurred: "ENOENT: no such file or directory, lstat '/app/node_modules/<random_pacakge>

我注意到问题似乎与链接到软件包的git存储库版本有关。

复制

package.json

{
  "dependencies": {
    "react-navigation-core": "https://github.com/react-navigation/react-navigation-core",
    "react-navigation-hooks": "https://github.com/react-navigation/react-navigation-hooks"
  }
}

rm -rf node_modules && yarn cache clean && yarn

解决方法

设置network-concurrency 1每次都会为我解决问题。

运行npm install也可以。

笔记

从依赖项列表中删除任何一个软件包都不会导致该错误,也不会使用这些软件包的已发布npm版本。

似乎每次都会引发不同的错误。 它似乎随机发生在不同的文件上,并且错误略有不同。

error https://registry.yarnpkg.com/core-js/-/core-js-1.2.7.tgz: Extracting tar content of undefined failed, the file appears to be corrupt: "ENOENT: no such file or directory, chmod  '/home/cameron/.cache/yarn/v4/npm-core-js-1.2.7-652294c14651db28fa93bd2d5ff2983a4f08c636/node_modules/core-js/library/modules/es6.reflect.apply.js'"

变化

  • ENOENT: no such file or directory, chmod
  • ENOENT: no such file or directory, stat
  • ENOENT: no such file or directory, open
  • EEXIST: file already exists, mkdir

其他讯息

info There appears to be trouble with your network connection. Retrying...

确实,我只是尝试使用您的package.json重现,并且在第一次尝试时出现了错误。

WSL文件系统与已经存在的NTFS fs交互在哪一层?

你们是在装入的驱动器(对于常见示例是/ c或/ mnt / c)中还是在其中一个装入器之外看到此错误? 介意测试一个替代项(例如〜/。)并报告任何差异?

我的直觉困扰着我,但我的docker体验可能使我感到困惑,因此我需要独立进行检查。

[2/4]正在获取软件包...
错误https://registry.yarnpkg.com/smartwrap/-/smartwrap-1.0.10.tgz :提取未定义的tar内容失败,该文件似乎是
rrupt:“ ENOENT:没有此类文件或目录,请打开'C:\ Users \ Administrator \ AppData \ Local \ Yarn \ Cache \ v4 \ npm-smartwrap-1.0.10-873ef350d
4ee1262fed4a80a55634d86ae1faf48 \ node_modules \ smartwrap \ ejq'“
信息有关此命令的文档,请访问https://yarnpkg.com/en/docs/cli/global

你们是在装入的驱动器(对于常见示例是/ c或/ mnt / c)中还是在其中一个装入器之外看到此错误? 介意测试一个替代项(例如〜/。)并报告任何差异?

发生这种情况时,是否存在一致可复制的情况? 对我来说,这是相当随机的,但是我在已安装的驱动器上执行所有yarn add -ing操作,这种情况经常发生。

我能够在已安装的驱动器和~复制https://github.com/yarnpkg/yarn/issues/2629#issuecomment -451638917。

我还尝试重现https://github.com/yarnpkg/yarn/issues/2629#issuecomment -282745896,但它始终无法获取最后一个包,我敢肯定这是没有关系的。

最近几个小时我遇到了同样的问题。 纱线随机未能安装各种卷装,表明上述错误。

我尝试重置纱线缓存并重新安装并以网络并发1运行,但两者均无效。

对我来说解决了问题的是,切换到另一个网络(只是使用我的手机AP而不是WiFi),并且一切都像魔术一样工作。

我有一个预感,这个问题可能与某些非常特定的网络错误的错误处理恢复有关。 稍后再调查。

我可以确认之前的评论。 设置network-concurrency没有帮助。 切换到电话热点对我来说解决了这个问题。 我的环境:Windows 10(Linux子系统-Ubuntu)

我在WSL上,一直在使用geo-tz软件包看到此问题,该软件包具有一个(稍微奇怪的)深度嵌套的文件夹结构。 我尝试了一些--network-timeout--network-concurrency事情,但是一无所获。 但是,当我在Windows上启用长路径时(请参见此SuperUser帖子),它现在可以正常工作。 也许这可能对WSL的其他人有所帮助。 编辑它似乎我讲得太早了。 它正在工作,并且链接依赖项的速度更快,但是现在我又看到了相同的错误。

仍在打破CI。

在作为Jenkins从属节点的Debian Linux机器上运行的Yarn 1.13.0存在相同的问题。 请注意,我们有一个本地的纱线存储服务器,因此在构建期间,没有(或很少)从公共Internet回购服务器进行物理下载。

yarn install v1.13.0
[1/4] Resolving packages...
[2/4] Fetching packages...
error An unexpected error occurred: "http://sqrep01.rsint.net:4873/lodash/-/lodash-4.17.10.tgz: ENOENT: no such file or directory, open '/home/jenkins/.cache/yarn/v4/npm-lodash-4.17.10-1b7793cf7259ea38fb3661d4d38b3260af8ae4e7/node_modules/lodash/.yarn-tarball.tgz'".

实际的文件现有的,无论是我们的回购服务器和文件系统上。
如果我们再次开始构建,则构建可能会成功,也可能会因某些其他(随机)文件而失败。
我们没有更改默认的网络并发设置。

同上-即使在1.14 ,这仍然是一个问题

Arguments: 
  /home/jeff/n/bin/node /usr/share/yarn/bin/yarn.js install

PATH: 
  /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/mnt/c/Windows/System32:/mnt/c/Windows:/mnt/c/Windows/System32/wbem:/mnt/c/Windows/System32/WindowsPowerShell/v1.0:/mnt/c/Program Files (x86)/NVIDIA Corporation/PhysX/Common:/mnt/c/Windows/System32:/mnt/c/Windows:/mnt/c/Windows/System32/wbem:/mnt/c/Windows/System32/WindowsPowerShell/v1.0:/mnt/c/Windows/System32/OpenSSH:/mnt/c/Program Files/NVIDIA Corporation/NVIDIA NvDLISR:/mnt/c/Program Files/Git/cmd:/mnt/c/Users/jkono/AppData/Local/Microsoft/WindowsApps:/mnt/c/Users/jkono/AppData/Local/hyper/app-2.1.2/resources/bin:/mnt/c/Users/jkono/AppData/Local/Programs/Microsoft VS Code/bin:/home/jeff/n/bin

Yarn version: 
  1.14.0

Node version: 
  10.15.1

Platform: 
  linux x64

Trace: 
  Error: ENOENT: no such file or directory, scandir '/mnt/c/Users/jkono/dev/PROJECT/node_modules/@storybook/addon-links/src'

也:

➜  yarn cache dir
/mnt/c/Users/jkono/home/.cache/yarn/v4

这很烦人,我们每天在本地和ci机器上看到此消息。

确认这一点也在我们的CI中无时无刻不在发生

嗨,确认此问题发生在我们的CI上。
这符合问题。

错误https://registry.yarnpkg.com/core-js/-//core-js-1.2.7.tgz :提取未定义的tar内容失败,该文件似乎已损坏:“ ENOENT:没有这样的文件或目录, chmod'/usr/local/share/.cache/yarn/v4/npm-core-js-1.2.7-652294c14651db28fa93bd2d5ff2983a4f08c636/node_modules/core-js/es7/regexp.js'”
信息请访问https://yarnpkg.com/en/docs/cli/install以获得有关此命令的文档。

今天,我们的一个开源项目也开始发生同样的问题。

您可以在此处看到失败的构建:
https://travis-ci.com/quid/refraction/builds/103692106

在这里成功的(用--network-concurrency 1 ):
https://travis-ci.com/quid/refraction/builds/103693682

我希望它可以帮助诊断问题!

存储库的源代码位于:
https://github.com/quid/refraction

也许这对某人有帮助:
在我们的Jenkins CI上,问题在于Jenkins触发了我们应用程序的并行构建,这意味着两个(或多个)shell脚本同时触发了“纱线安装”,其中一个构建过程进一步_删除了yarn-cache在开始“纱线安装”之前,完全_(使用“纱线高速缓存清理”)。 当然,这对于其他纱线工艺来说是致命的问题。
然后,我们删除了缓存清理,并将yarn命令更改为
yarn install --verbose --prefer-offline --mutex file:/tmp/.yarn-mutex --network-concurrency 1
(_-- verbose_并不是必须的)并插入
child-concurrency 1
在.yarnrc中。
现在,在触发并行构建时,纱线检测到另一个纱线过程处于活动状态,并等待其结束。 这解决了CI上的“无此类文件”问题。

每当我使用以下格式的软件包引用时,都会在本地计算机上遇到此问题:

"connect-js-adapter-tls": "git+https://github.com/jeremyjs/connect-js-adapter-tls.git#v3.2.2",

显着特征:私有软件包,github url,git + https,带标签的git参考

为我重现的步骤:

  1. 清理板岩:删除所有此类引用,然后运行yarn install 。 它工作正常。
  2. 将所有此类引用重新添加到我的package.json ,然后再次运行yarn install ,在重新添加这些引用之后,在第一次运行时仍然可以正常工作。
  3. 只要没有更改,就可以再运行yarn install次。
  4. 但是,修改任何程序包并运行yarn install ,我得到了错误。
  5. 如果然后删除所有此类软件包并运行yarn install ,则不会收到错误消息。 这使我们回到步骤1。

错误看起来像这样:

error An unexpected error occurred: "ENOENT: no such file or directory, open '/Users/jeremy/Library/Caches/Yarn/v4/npm-connect-js-adapter-tls-3.2.2-0c97726d92c21183a7fb7334344eb5047e8bc158/node_modules/connect-js-adapter-tls/.yarn-metadata.json'".

如果删除所有git标记引用,则会观察到相同的行为。 因此,我相信这不是问题。

"connect-js-adapter-tls": "git+https://github.com/jeremyjs/connect-js-adapter-tls.git",

运行npm install也会产生错误:

npm ERR! premature close

npm ERR! A complete log of this run can be found in:
npm ERR!     /Users/jeremy/.npm/_logs/2019-03-20T04_38_38_739Z-debug.log

npm-debug.log: https ://gist.github.com/jeremyjs/e97381b16f46124ff7a9bd75ad79fd62

作为后续,我使用了一种变通方法,在安装前制作一个package.json脚本从缓存中清除那些软件包:

"install-clean": "yarn cache clean connect-js-adapter-tls connect-js-api connect-js-codec connect-js-encode-decode connect-protobuf-messages && yarn install"

有什么想法可能是这个问题吗?
在我们的案例中,我们正在yarn install作为CI(在docker容器内部)的一部分运行,并得到了相同的错误。 我们已经尝试了yarn cache clean

不知道在这一点上还有什么尝试,以及它停止了我们的构建。 😬

丹,您是否尝试使用--network-concurrency 1运行? 我有一个类似的
场景,这解决了我的问题。
在2019年4月2日22:17,“ Dan Van Brunt” [email protected]写道:

有什么想法可能是这个问题吗?
在我们的案例中,我们将纱线安装作为CI的一部分运行(在docker内部
容器),并得到这些相同的错误。 我们尝试过将纱线缓存清理干净

不知道在这一点上还有什么尝试,以及它停止了我们的构建。 😬

-
您收到此消息是因为您已订阅此线程。
直接回复此电子邮件,在GitHub上查看
https://github.com/yarnpkg/yarn/issues/2629#issuecomment-479283590或静音
线程
https://github.com/notifications/unsubscribe-auth/AFU4O1iKA-HBd62Hema1ETmuUlMro_GLks5vdAEOgaJpZM4L3JbX

@tevaum也解决了我们CI的问题。 这也大大降低了我们的构建速度。 如此可怕,但只能解决。

是的不利的一面。 您可以尝试使用2或4这样的小数字...
会快一点,但是对我来说,唯一起作用的值是1:/

因此,我们将不得不等待真正的修复满意为止;)
在2019年4月4日00:26,“ kunokdev” [email protected]写道:

@tevaum https://github.com/tevaum也解决了我们CI的问题。
这也大大降低了我们的构建速度。 太坏了。

-
您收到此邮件是因为有人提到您。

直接回复此电子邮件,在GitHub上查看
https://github.com/yarnpkg/yarn/issues/2629#issuecomment-479735791或静音
线程
https://github.com/notifications/unsubscribe-auth/AFU4O1a9lHn41K0eEQT9zZZzOoATiT61ks5vdXD8gaJpZM4L3JbX

这个会解决吗? 这使纱线在我的多个项目中无法使用

请使用此处记录的互斥锁选项: https: //yarnpkg.com/en/docs/cli/#toc -concurrency-and-mutex

纱线的缓存使用情况不能安全地用于多进程方式,这就是造成此类错误的原因。

另外,您也可以使用此处记录的--cache-folder选项设置每个进程的缓存文件夹: https ://yarnpkg.com/en/docs/cli/cache#change -the-cache-path-for-yarn-

使用互斥锁选项的缺点是整台机器上只有一个纱线实例(其他实例将等待活动进程终止),这意味着CI作业之间完全没有并发性。

每个进程缓存文件夹的缺点是I / O增加,并且由于缓存重用较少而导致某些潜在的损失。

理想的解决方案是实现进程安全的缓存实现,由于Node中没有任何文件锁定功能,这并不是一件容易的事(唯一可靠的选择似乎是创建互斥体目录)。 第二好的方法是使用每个并行臂的缓存文件夹,该文件夹将允许并发和缓存在同一臂中的复用。

我不认为这是互斥的东西。 我和其他一些人确实一次运行一根单纱-在我的情况下,在Docker映像构建阶段,它只是Dockerfile中的RUN yarn install 。 这可以确保在该环境中没有其他进程同时运行。

请查看以下最小复制示例(至少对于我的OSX):

728 22:49:55 iMac ~/tmp/ynse$ ls
Dockerfile  package.json
729 22:49:58 iMac ~/tmp/ynse$ cat Dockerfile
FROM node
ADD . /app
WORKDIR /app
RUN yarn

730 22:50:00 iMac ~/tmp/ynse$ cat package.json
{
  "dependencies": {
    "react-navigation-core": "https://github.com/react-navigation/react-navigation-core",
    "react-navigation-hooks": "https://github.com/react-navigation/react-navigation-hooks"
  }
}
731 22:50:03 iMac ~/tmp/ynse$ docker build -t yt .
Sending build context to Docker daemon  15.87kB
Step 1/4 : FROM node
 ---> 39337023f8d4
Step 2/4 : ADD . /app
 ---> aa86b2d7f191
Step 3/4 : WORKDIR /app
 ---> Running in 83baa8603935
Removing intermediate container 83baa8603935
 ---> 80741f170292
Step 4/4 : RUN yarn
 ---> Running in 0718118bdcd6
yarn install v1.3.2
warning package.json: No license field
info No lockfile found.
warning No license field
[1/4] Resolving packages...
[2/4] Fetching packages...
[1/4] Resolving packages...
[2/4] Fetching packages...
[1/4] Resolving packages...
[2/4] Fetching packages...
info If you think this is a bug, please open a bug report with the information provided in "/app/yarn-error.log".
info Visit https://yarnpkg.com/en/docs/cli/install for documentation about this command.
error An unexpected error occurred: "https://registry.yarnpkg.com/lodash/-/lodash-4.17.11.tgz: EEXIST: file already exists, mkdir '/usr/local/share/.cache/yarn/v1/npm-lodash-4.17.11-b39ea6229ef607ecd89e2c8df12536891cac9b8d'".
^C
732 22:50:23 iMac ~/tmp/ynse$

@nopik -Yarn 1.3.2很老,在该版本之后进行了许多修复。 您是否尝试过使用最新的Docker内部工具之一?

实际上,该节点映像已经很旧了。 这是几分钟前从dockerhub node:latest下载的

Sending build context to Docker daemon  15.87kB
Step 1/4 : FROM node
 ---> a9c1445cbd52
Step 2/4 : ADD . /app
 ---> Using cache
 ---> 26ed37136c09
Step 3/4 : WORKDIR /app
 ---> Using cache
 ---> b2339e7d25af
Step 4/4 : RUN yarn
 ---> Running in cdbdfd9c373c
yarn install v1.15.2
warning package.json: No license field
info No lockfile found.
warning No license field
[1/4] Resolving packages...
[2/4] Fetching packages...
[1/4] Resolving packages...
[2/4] Fetching packages...
[1/4] Resolving packages...
[2/4] Fetching packages...
error An unexpected error occurred: "ENOTEMPTY: directory not empty, rmdir '/usr/local/share/.cache/yarn/v4/npm-lodash-4.17.11-b39ea6229ef607ecd89e2c8df12536891cac9b8d/node_modules/lodash'".
info If you think this is a bug, please open a bug report with the information provided in "/app/yarn-error.log".
info Visit https://yarnpkg.com/en/docs/cli/install for documentation about this command.

@BYK您是否尝试过自己构建此

一旦连接到计算机(现在可以在移动设备上),几天后即可尝试。 看起来很奇怪,但是目录是一致的。 我会尝试看看发生了什么,感谢repro的案例。

@nopik-仔细查看日志,确实显示了多个并行运行的Yarn实例。 您将永远不会两次看到相同的“正在解决程序包”消息。 我不知道为什么会这样,但我100%确信那是原因。

@BYK我确实看到,其中一个软件包具有"scripts": { "build": "yarn babel --out-dir dist && del-cli 'dist/**/__tests__' && yarn tsc --emitDeclarationOnly", "prepare": "yarn build" } ,其他软件包具有不同的脚本,但仍在prepare中运行yarn。

@Nopik-不要以为这些会导致问题,因为它们只是运行脚本,而不是其他安装。 这些脚本也在I / O阶段之后运行。 必须有其他东西触发多个yarn install实例。

我同意这可能是并发运行的多个yarn实例。 问题在于,这是在yarn的单个cli调用上发生的。 不需要docker复制。

我的一门知识不足,理论是,这与准备步骤有关,并且yarn可能会启动一个额外的实例来“构建” git程序包。 特别是我敢打赌,这是两个依赖关系,每个依赖关系都依赖于一个公共包,也需要构建。 Yarn尝试变得聪明并并行构建每个单独的程序包,但是当它尝试在同一缓存位置中构建两个程序包时失败。

在我们的情况下,我们没有多个纱线实例。

我们的系统在其自己的docker映像中运行。 它具有单个_纱线安装_。 它开始突然出现异常,现在如果没有将网络并发设置为1,我们将无法工作。
除非纱线本身在一夜之间发生变化,否则我看不到其他问题,除非

如果尝试使用--mutex file甚至--mutex network解决此问题,您将不可避免地(可能)遇到此错误https://github.com/yarnpkg/yarn/issues/6650 (现在已打开/未解决已有6个月)😢

这意味着一旦您运行yarn install ,尽管它会成功执行,但是您将永远无法执行另一个yarn命令

丹,您是否尝试使用--network-concurrency 1运行? 我也有类似的情况,这解决了我的问题。

@tevaum-正是问题所在。 谢谢!
我有一个脚本,我认为它不会比一个实例运行更多,但是确实如此。 ♂‍♂️

@tevaum也为我解决了。 谢谢。

如果尝试使用--mutex文件甚至--mutex网络解决此问题,您将不可避免地(可能)遇到此错误#6650(现在已打开/未解决6个月)

@sarink —我也遇到了互斥锁选项错误; 谢谢你提到它。

yarn说一切都很好。

PS C:\Users\chtacklind\Desktop\git\Project> yarn --verbose
yarn install v1.10.1
verbose 0.282 Checking for configuration file "C:\\Users\\chtacklind\\Desktop\\git\\Project\\.npmrc".
verbose 0.284 Found configuration file "C:\\Users\\chtacklind\\Desktop\\git\\Project\\.npmrc".
verbose 0.285 Checking for configuration file "C:\\Users\\chtacklind\\.npmrc".
verbose 0.286 Checking for configuration file "C:\\Program Files\\nodejs\\etc\\npmrc".
verbose 0.288 Checking for configuration file "C:\\Users\\chtacklind\\Desktop\\git\\Project\\.npmrc".
verbose 0.289 Found configuration file "C:\\Users\\chtacklind\\Desktop\\git\\Project\\.npmrc".
verbose 0.29 Checking for configuration file "C:\\Users\\chtacklind\\Desktop\\git\\.npmrc".
verbose 0.291 Checking for configuration file "C:\\Users\\chtacklind\\Desktop\\.npmrc".
verbose 0.295 Checking for configuration file "C:\\Users\\chtacklind\\.npmrc".
verbose 0.297 Checking for configuration file "C:\\Users\\.npmrc".
verbose 0.3 Checking for configuration file "C:\\Users\\chtacklind\\Desktop\\git\\Project\\.yarnrc".
verbose 0.301 Found configuration file "C:\\Users\\chtacklind\\Desktop\\git\\Project\\.yarnrc".
verbose 0.302 Checking for configuration file "C:\\Users\\chtacklind\\.yarnrc".
verbose 0.309 Found configuration file "C:\\Users\\chtacklind\\.yarnrc".
verbose 0.312 Checking for configuration file "C:\\Program Files\\nodejs\\etc\\yarnrc".
verbose 0.317 Checking for configuration file "C:\\Users\\chtacklind\\Desktop\\git\\Project\\.yarnrc".
verbose 0.318 Found configuration file "C:\\Users\\chtacklind\\Desktop\\git\\Project\\.yarnrc".
verbose 0.319 Checking for configuration file "C:\\Users\\chtacklind\\Desktop\\git\\.yarnrc".
verbose 0.326 Checking for configuration file "C:\\Users\\chtacklind\\Desktop\\.yarnrc".
verbose 0.327 Checking for configuration file "C:\\Users\\chtacklind\\.yarnrc".
verbose 0.333 Found configuration file "C:\\Users\\chtacklind\\.yarnrc".
verbose 0.336 Checking for configuration file "C:\\Users\\.yarnrc".
verbose 0.346 current time: 2019-05-12T11:56:12.800Z
[1/4] Resolving packages...
success Already up-to-date.
Done in 0.33s.

但是运行yarn --check尝试构建,但总是失败。

有时最后出现乱码的错误消息:

PS C:\Users\chtacklind\Desktop\git\Project> yarn --check-files --network-concurrency 1 --mutex file:C:/.yarn-mutex --verbose
yarn install v1.10.1
verbose 0.286 Checking for configuration file "C:\\Users\\chtacklind\\Desktop\\git\\Project\\.npmrc".
verbose 0.288 Found configuration file "C:\\Users\\chtacklind\\Desktop\\git\\Project\\.npmrc".
verbose 0.289 Checking for configuration file "C:\\Users\\chtacklind\\.npmrc".
verbose 0.29 Checking for configuration file "C:\\Program Files\\nodejs\\etc\\npmrc".
verbose 0.291 Checking for configuration file "C:\\Users\\chtacklind\\Desktop\\git\\Project\\.npmrc".
verbose 0.292 Found configuration file "C:\\Users\\chtacklind\\Desktop\\git\\Project\\.npmrc".
verbose 0.293 Checking for configuration file "C:\\Users\\chtacklind\\Desktop\\git\\.npmrc".
verbose 0.294 Checking for configuration file "C:\\Users\\chtacklind\\Desktop\\.npmrc".
verbose 0.295 Checking for configuration file "C:\\Users\\chtacklind\\.npmrc".
verbose 0.296 Checking for configuration file "C:\\Users\\.npmrc".
verbose 0.302 Checking for configuration file "C:\\Users\\chtacklind\\Desktop\\git\\Project\\.yarnrc".
verbose 0.304 Found configuration file "C:\\Users\\chtacklind\\Desktop\\git\\Project\\.yarnrc".
verbose 0.305 Checking for configuration file "C:\\Users\\chtacklind\\.yarnrc".
verbose 0.306 Found configuration file "C:\\Users\\chtacklind\\.yarnrc".
verbose 0.307 Checking for configuration file "C:\\Program Files\\nodejs\\etc\\yarnrc".
verbose 0.308 Checking for configuration file "C:\\Users\\chtacklind\\Desktop\\git\\Project\\.yarnrc".
verbose 0.311 Found configuration file "C:\\Users\\chtacklind\\Desktop\\git\\Project\\.yarnrc".
verbose 0.313 Checking for configuration file "C:\\Users\\chtacklind\\Desktop\\git\\.yarnrc".
verbose 0.314 Checking for configuration file "C:\\Users\\chtacklind\\Desktop\\.yarnrc".
verbose 0.315 Checking for configuration file "C:\\Users\\chtacklind\\.yarnrc".
verbose 0.316 Found configuration file "C:\\Users\\chtacklind\\.yarnrc".
verbose 0.317 Checking for configuration file "C:\\Users\\.yarnrc".
verbose 0.32 current time: 2019-05-12T11:56:20.033Z
[1/4] Resolving packages...
[2/4] Fetching packages...
verbose 2.344 Checking for configuration file "C:\\Users\\chtacklind\\AppData\\Local\\Yarn\\Cache\\v2\\.tmp\\ef8122f161347726dd1763e1dca6eeef.d34344cbdf2ff518a03c08fc5f46827c9d66e543.prepare\\.npmrc".
verbose 2.344 Checking for configuration file "C:\\Users\\chtacklind\\.npmrc".
verbose 2.345 Checking for configuration file "C:\\Program Files\\nodejs\\etc\\npmrc".
verbose 2.345 Checking for configuration file "C:\\Users\\chtacklind\\AppData\\Local\\Yarn\\Cache\\v2\\.tmp\\ef8122f161347726dd1763e1dca6eeef.d34344cbdf2ff518a03c08fc5f46827c9d66e543.prepare\\.npmrc".
verbose 2.346 Checking for configuration file "C:\\Users\\chtacklind\\AppData\\Local\\Yarn\\Cache\\v2\\.tmp\\.npmrc".
verbose 2.346 Checking for configuration file "C:\\Users\\chtacklind\\AppData\\Local\\Yarn\\Cache\\v2\\.npmrc".
verbose 2.346 Checking for configuration file "C:\\Users\\chtacklind\\AppData\\Local\\Yarn\\Cache\\.npmrc".
verbose 2.346 Checking for configuration file "C:\\Users\\chtacklind\\AppData\\Local\\Yarn\\.npmrc".
verbose 2.347 Checking for configuration file "C:\\Users\\chtacklind\\AppData\\Local\\.npmrc".
verbose 2.347 Checking for configuration file "C:\\Users\\chtacklind\\AppData\\.npmrc".
verbose 2.347 Checking for configuration file "C:\\Users\\chtacklind\\.npmrc".
verbose 2.348 Checking for configuration file "C:\\Users\\.npmrc".
verbose 2.348 Checking for configuration file "C:\\Users\\chtacklind\\AppData\\Local\\Yarn\\Cache\\v2\\.tmp\\ef8122f161347726dd1763e1dca6eeef.d34344cbdf2ff518a03c08fc5f46827c9d66e543.prepare\\.yarnrc".
verbose 2.349 Checking for configuration file "C:\\Users\\chtacklind\\.yarnrc".
verbose 2.35 Found configuration file "C:\\Users\\chtacklind\\.yarnrc".
verbose 2.351 Checking for configuration file "C:\\Program Files\\nodejs\\etc\\yarnrc".
verbose 2.352 Checking for configuration file "C:\\Users\\chtacklind\\AppData\\Local\\Yarn\\Cache\\v2\\.tmp\\ef8122f161347726dd1763e1dca6eeef.d34344cbdf2ff518a03c08fc5f46827c9d66e543.prepare\\.yarnrc".
verbose 2.353 Checking for configuration file "C:\\Users\\chtacklind\\AppData\\Local\\Yarn\\Cache\\v2\\.tmp\\.yarnrc".
verbose 2.358 Checking for configuration file "C:\\Users\\chtacklind\\AppData\\Local\\Yarn\\Cache\\v2\\.yarnrc".
verbose 2.359 Checking for configuration file "C:\\Users\\chtacklind\\AppData\\Local\\Yarn\\Cache\\.yarnrc".
verbose 2.36 Checking for configuration file "C:\\Users\\chtacklind\\AppData\\Local\\Yarn\\.yarnrc".
verbose 2.361 Checking for configuration file "C:\\Users\\chtacklind\\AppData\\Local\\.yarnrc".
verbose 2.362 Checking for configuration file "C:\\Users\\chtacklind\\AppData\\.yarnrc".
verbose 2.363 Checking for configuration file "C:\\Users\\chtacklind\\.yarnrc".
verbose 2.364 Found configuration file "C:\\Users\\chtacklind\\.yarnrc".
verbose 2.366 Checking for configuration file "C:\\Users\\.yarnrc".
[1/4] Resolving packages...
[2/4] Fetching packages...
verbose 2.541 Performing "GET" request to "https://registry.yarnpkg.com/typescript/-/typescript-3.3.3333.tgz".
verbose 3.263 Checking for configuration file "C:\\Users\\chtacklind\\AppData\\Local\\Yarn\\Cache\\v2\\.tmp\\6621674c4e43b664dde14df71eaf0cc8.09d44d8abc94f728f1c5ea93c22fe9b4f87d9076.prepare\\.npmrc".
verbose 3.264 Checking for configuration file "C:\\Users\\chtacklind\\.npmrc".
verbose 3.265 Checking for configuration file "C:\\Program Files\\nodejs\\etc\\npmrc".
verbose 3.266 Checking for configuration file "C:\\Users\\chtacklind\\AppData\\Local\\Yarn\\Cache\\v2\\.tmp\\6621674c4e43b664dde14df71eaf0cc8.09d44d8abc94f728f1c5ea93c22fe9b4f87d9076.prepare\\.npmrc".
verbose 3.268 Checking for configuration file "C:\\Users\\chtacklind\\AppData\\Local\\Yarn\\Cache\\v2\\.tmp\\.npmrc".
verbose 3.27 Checking for configuration file "C:\\Users\\chtacklind\\AppData\\Local\\Yarn\\Cache\\v2\\.npmrc".
verbose 3.271 Checking for configuration file "C:\\Users\\chtacklind\\AppData\\Local\\Yarn\\Cache\\.npmrc".
verbose 3.273 Checking for configuration file "C:\\Users\\chtacklind\\AppData\\Local\\Yarn\\.npmrc".
verbose 3.278 Checking for configuration file "C:\\Users\\chtacklind\\AppData\\Local\\.npmrc".
verbose 3.279 Checking for configuration file "C:\\Users\\chtacklind\\AppData\\.npmrc".
verbose 3.28 Checking for configuration file "C:\\Users\\chtacklind\\.npmrc".
verbose 3.281 Checking for configuration file "C:\\Users\\.npmrc".
verbose 3.283 Checking for configuration file "C:\\Users\\chtacklind\\AppData\\Local\\Yarn\\Cache\\v2\\.tmp\\6621674c4e43b664dde14df71eaf0cc8.09d44d8abc94f728f1c5ea93c22fe9b4f87d9076.prepare\\.yarnrc".
verbose 3.285 Checking for configuration file "C:\\Users\\chtacklind\\.yarnrc".
verbose 5.007 Error: https://registry.yarnpkg.com/typescript/-/typescript-3.3.3333.tgz: Extracting tar content of undefined failed, the file appears to be corrupt: "ENOENT: no such file or directory, stat 'C:\\Users\\chtacklind\\AppData\\Local\\Yarn\\Cache\\v2\\npm-typescript-3.3.3333-171b2c5af66c59e9431199117a3bcadc66fdcfd6\\lib\\tsserver.js'"nd\\AppData\\Local\\Yarn\\Cache\\v2\\.tmp\\6621674c4e43b664dde14df71eaf0cc
    at MessageError.ExtendableBuiltin (C:\Program Files (x86)\Yarn\lib\cli.js:243:66)
    at new MessageError (C:\Program Files (x86)\Yarn\lib\cli.js:272:123)pData\\Local\\Yarn\\Cache\\v2\\.tmp\\.yarnrc".
    at Extract.<anonymous> (C:\Program Files (x86)\Yarn\lib\cli.js:56849:14)a\\Local\\Yarn\\Cache\\v2\\.yarnrc".
    at Extract.emit (events.js:194:15)on file "C:\\Users\\chtacklind\\AppData\\Local\\Yarn\\Cache\\.yarnrc".
    at Extract.module.exports.Extract.destroy (C:\Program Files (x86)\Yarn\lib\cli.js:131115:17)nrc".
    at onunlock (C:\Program Files (x86)\Yarn\lib\cli.js:130992:26)nd\\AppData\\Local\\.yarnrc".
    at C:\Program Files (x86)\Yarn\lib\cli.js:43373:25rs\\chtacklind\\AppData\\.yarnrc".
    at C:\Program Files (x86)\Yarn\lib\cli.js:43339:23rs\\chtacklind\\.yarnrc".
    at C:\Program Files (x86)\Yarn\lib\cli.js:56799:13acklind\\.yarnrc".
    at FSReqWrap.oncomplete (fs.js:153:21)ile "C:\\Users\\.yarnrc".
error https://registry.yarnpkg.com/typescript/-/typescript-3.3.3333.tgz: Extracting tar content of undefined failed, the file appears to be corrupt: "ENOENT: no such file or directory, stat 'C:\\Users\\chtacklind\\AppData\\Local\\Yarn\\Cache\\v2\\npm-typescript-3.3.3333-171b2c5af66c59e9431199117a3bcadc66fdcfd6\\lib\\tsserver.js'"
info Visit https://yarnpkg.com/en/docs/cli/install for documentation about this command.
PS C:\Users\chtacklind\Desktop\git\Project>

有时会出现不同的错误:

...
[2/4] Fetching packages...
verbose 2.635 Performing "GET" request to "https://registry.yarnpkg.com/typescript/-/typescript-3.3.3333.tgz".
verbose 3.465 Checking for configuration file "C:\\Users\\chtacklind\\AppData\\Local\\Yarn\\Cache\\v2\\.tmp\\6621674c4e43b664dde14df71eaf0cc8.09d44d8abc94f728f1c5ea93c22fe9b4f87d9076.prepare\\.npmrc".
verbose 3.466 Checking for configuration file "C:\\Users\\chtacklind\\.npmrc".
verbose 3.467 Checking for configuration file "C:\\Program Files\\nodejs\\etc\\npmrc".
verbose 3.468 Checking for configuration file "C:\\Users\\chtacklind\\AppData\\Local\\Yarn\\Cache\\v2\\.tmp\\6621674c4e43b664dde14df71eaf0cc8.09d44d8abc94f728f1c5ea93c22fe9b4f87d9076.prepare\\.npmrc".
verbose 3.469 Checking for configuration file "C:\\Users\\chtacklind\\AppData\\Local\\Yarn\\Cache\\v2\\.tmp\\.npmrc".
verbose 3.47 Checking for configuration file "C:\\Users\\chtacklind\\AppData\\Local\\Yarn\\Cache\\v2\\.npmrc".
verbose 3.471 Checking for configuration file "C:\\Users\\chtacklind\\AppData\\Local\\Yarn\\Cache\\.npmrc".
verbose 3.473 Checking for configuration file "C:\\Users\\chtacklind\\AppData\\Local\\Yarn\\.npmrc".
verbose 3.474 Checking for configuration file "C:\\Users\\chtacklind\\AppData\\Local\\.npmrc".
verbose 3.48 Checking for configuration file "C:\\Users\\chtacklind\\AppData\\.npmrc".
verbose 3.481 Checking for configuration file "C:\\Users\\chtacklind\\.npmrc".
verbose 3.482 Checking for configuration file "C:\\Users\\.npmrc".
verbose 3.483 Checking for configuration file "C:\\Users\\chtacklind\\AppData\\Local\\Yarn\\Cache\\v2\\.tmp\\6621674c4e43b664dde14df71eaf0cc8.09d44d8abc94f728f1c5ea93c22fe9b4f87d9076.prepare\\.yarnrc".
verbose 3.485 Checking for configuration file "C:\\Users\\chtacklind\\.yarnrc".
verbose 3.486 Found configuration file "C:\\Users\\chtacklind\\.yarnrc".
verbose 3.49 Checking for configuration file "C:\\Program Files\\nodejs\\etc\\yarnrc".
verbose 3.492 Checking for configuration file "C:\\Users\\chtacklind\\AppData\\Local\\Yarn\\Cache\\v2\\.tmp\\6621674c4e43b664dde14df71eaf0cc8.09d44d8abc94f728f1c5ea93c22fe9b4f87d9076.prepare\\.yarnrc".
verbose 3.493 Checking for configuration file "C:\\Users\\chtacklind\\AppData\\Local\\Yarn\\Cache\\v2\\.tmp\\.yarnrc".
verbose 3.494 Checking for configuration file "C:\\Users\\chtacklind\\AppData\\Local\\Yarn\\Cache\\v2\\.yarnrc".
verbose 3.495 Checking for configuration file "C:\\Users\\chtacklind\\AppData\\Local\\Yarn\\Cache\\.yarnrc".
verbose 3.496 Checking for configuration file "C:\\Users\\chtacklind\\AppData\\Local\\Yarn\\.yarnrc".
verbose 3.497 Checking for configuration file "C:\\Users\\chtacklind\\AppData\\Local\\.yarnrc".
verbose 3.501 Checking for configuration file "C:\\Users\\chtacklind\\AppData\\.yarnrc".
verbose 3.503 Checking for configuration file "C:\\Users\\chtacklind\\.yarnrc".
verbose 3.504 Found configuration file "C:\\Users\\chtacklind\\.yarnrc".
verbose 3.505 Checking for configuration file "C:\\Users\\.yarnrc".
[1/4] Resolving packages...
[2/4] Fetching packages...
verbose 4.608 Error: EPERM: operation not permitted, unlink 'C:\Users\chtacklind\AppData\Local\Yarn\Cache\v2\npm-typescript-3.3.3333-171b2c5af66c59e9431199117a3bcadc66fdcfd6\.yarn-tarball.tgz'
error An unexpected error occurred: "EPERM: operation not permitted, unlink 'C:\\Users\\chtacklind\\AppData\\Local\\Yarn\\Cache\\v2\\npm-typescript-3.3.3333-171b2c5af66c59e9431199117a3bcadc66fdcfd6\\.yarn-tarball.tgz'".
info If you think this is a bug, please open a bug report with the information provided in "C:\\Users\\chtacklind\\Desktop\\git\\Project\\yarn-error.log".
info Visit https://yarnpkg.com/en/docs/cli/install for documentation about this command.
PS C:\Users\chtacklind\Desktop\git\Project>

请注意,即使我指定了--mutex ,两个纱线过程仍在运行。

值得注意的是,此程序包具有git依赖项,该依赖项具有需要执行的tsc prepare步骤。 该软件包还具有git依赖关系,需要相同的过程。 显然,yarn试图将相同的包装解包到相同的位置,并且我们遇到了竞争问题。

为什么甚至在没有通知的情况下,yarn仍运行多个实例?

作为更新,每次使用yarn install --network-concurrency 1 --mutex network似乎可以每次仅在部分时间成功的情况下起作用。

那么,该问题的解决方案是什么?
我在Ubuntu Linux 18.04上使用yarn 1.16
而且我仍然收到此错误消息:

错误发生意外错误:“ ENOENT:没有这样的文件或目录,lstat'/ home / user / workspace / project / packages / components / node_modules / source-map-support'”。

我的命令是:

yarn install --check-files --frozen-lockfile --network-concurrency 1

而且我两次都收到此错误:((
PS:我在monorepo工作,所以我启用了纱线工作区
PPS:
我仔细检查了
添加--mutex文件或--mutex网络无济于事。

我只能确认解决方案的解决方案正在脚本中

until
    yarn install --check-files --frozen-lockfile;
do
    echo "Surprise, surprise. Let's try again..."
done

:(

Fwiw,我能够通过使用npmyarn来切换到npm,使用synpyarn.lock转换为package-lock.json ,并运行npm install 。 我以为这是一个痛苦的过程,但是npm进步了很多,只花了我30分钟,现在它随处可见

似乎这里的问题是,没有一个真正简单的例子来说明问题所在。 我发布了一个琐碎的package.json ,可以为我可靠地重现该问题,但其中包含的软件包有些复杂。

我怀疑问题是当您有一个带有共享“叶子” /提示的依赖树时,它们需要花费一些时间来编译/安装(准备),而yarn尝试同时进行两次准备。 每个实例都是在共享的可预测位置“准备”的,并且它们不能同时“写入”同一位置(一个实例删除一个文件,而另一个实例则希望它仍然存在)。

我一直想用膨胀的“准备”步骤来创建一些简单的概念证明包,以测试该理论,但是还没有时间。 也许其他人可以在我掌握这一理论之前对其进行检验?

当您有多个纱线实例同时运行时,会发生这种情况。 您可以使用此处记录的--mutex选项: https: //yarnpkg.com/en/docs/cli/#toc -concurrency-and-mutex

@BYK似乎在很多情况下这不是问题。 其他人甚至表示此选项会给他们带来其他问题。

@cinderblock #6650似乎是一种--ignore-scripts来避免这种情况。

如果您还有其他线索,请分享,以便有人可以花更多的时间来调试它。

@BYK我还没有看到有人故意在install脚本中使用yarn install 。 您是否看到这个琐碎的package.json会产生此问题? 可以肯定的是,依赖包中的某些东西会引发此错误,并且也许它们具有您所指的掩埋install 。 但是package.jsonnpm ...

相关,如何/在何处推荐--ignore-scripts ? 许多软件包都依赖于安装后脚本来工作。

相关,推荐--ignore-scripts的方式/位置? 许多软件包都依赖于安装后脚本来工作。

哦,我只是在这里推荐它,而且我认为Yarn的许多成员都对此表示支持。 😀大多数软件包都很好,但是确实有一些软件包依赖于安装后的脚本。

您看到这个琐碎的package.json了吗

是的,但是即使是“琐碎”的package.json文件也可以产生非常大的依赖关系树,因此说它琐碎,实际上并没有太大变化,只是我倾向于以下列方式之一对其进行解释:

  • 毛线太烂,因此它甚至无法处理此_trivial_ package.json文件
  • 可以使用_trivial_ package.json文件重现此问题,但是您仍然无法/不解决它

这些都不对您有帮助,因此我倾向于忽略您的评论。

对于实际的问题,要使纱线与互斥锁一起运行,所有纱线实例都需要使用--mutex标志进行调用,因此查看是否能解决问题的最佳方法是将--install.mutex network到您的.yarnrc文件(请参阅https://yarnpkg.com/en/docs/yarnrc#toc-cli-arguments)。 也就是说,如果初始安装触发另一次安装,这可能会导致死锁,在第二次安装中,第二次安装将等待主安装完成,而主安装将在此脚本调用的纱线上被阻止,因此,我并不是真的除了实现线程/进程安全的缓存系统之外,其他人都知道如何解决此问题,而使用node提供的锁定原语几乎是不可能的。 最接近的东西似乎是此适当锁定的软件包,但我们谁也没有时间去尝试。 如果您有兴趣尝试将其实现到缓存的写/读代码中,我们可以为您提供帮助。

@BYK哦,如果我那样表歉意。 在此之前,我还没有找到可靠地重现该错误的方法,即使该错误仍然没有得到足够的解决。 这就是我发表评论的全部动力。

原谅我的坚持,但是我仍然看不到互斥选项是如何解决的。 我试过使用互斥锁运行,但它仍然同时运行。 也许我在测试中犯了一个错误? 我希望运行yarn --mutex ...会将选项传递给子实例(例如,像make那样)。 我还尝试了您的建议,将--install.mutex network到我的.yarnrc文件,但无济于事(相同的错误)。 --verbose确认正在加载选项。

也许我们可以从另一个方向来解决这个问题? npm没做的是什么毛线? 为什么npm没有这个问题?

@BYK ,使用mutex标志是完全不可接受的,因为还有一个额外的yarn bug,它将阻止您_ever执行另一条yarn command _...这就像您的解决方案“我将我的钥匙锁在我的车”是,“别担心,我想到了!只需要使用这个方便的工具即可对所有窗户和门锁进行打扫,现在您将再也无法锁定车了!” 🙄

不管是不是琐碎的package.json ,这都是一个大问题,没有解决方案或解决方法,使纱线对于许多人来说完全无法使用。 它应该引起更多关注。 特别是考虑到它已经开放了两年。

@sarink

@BYK ,使用互斥标记完全是不可接受的,因为还有一个额外的yarn bug,这将阻止您执行另一个yarn命令。

我不知道这样的错误,如果已经报告过,您能指出我吗? --mutex工作方式是防止使用同一互斥量的任何其他yarn实例运行,直到第一个实例完成。 因此,您说的(不是您的描述)对我来说听起来像是“按预期工作”。

不管是不是普通的package.json,这都是一个大问题,没有解决方案或解决方法,导致纱线对于很多人来说完全无法使用。 它应该引起更多关注。 特别是考虑到它已经开放两年了。

也许您应该花一点时间思考一下自己的句子的内部矛盾:“使纱线对很多人来说完全无法使用”和“已经开放了两年”。 本期只有56位参与者,其中包括约5位纱线维护者和138条评论,其中大多数都是围绕相同的话题。 这不是“很多人”,而是_some_人,并且对他们来说很重要,但我认为他们都不认为发送单行代码修复仅要求对完全提供的软件进行修复很重要。对他们免费。

@煤渣块

原谅我的坚持,但是我仍然看不到互斥选项是如何解决的。

关于持久性没有什么可原谅的,实际上是在您尝试解决问题时要庆祝的:)

我希望运行yarn --mutex ...会将该选项传递给子实例(例如,make make)。

我很确定它没有被遗忘。

我还尝试了您的建议,将--install.mutex网络添加到我的.yarnrc文件中,但无济于事(相同的错误)。 --verbose确认正在加载选项。

那很有趣。 可能是因为新的yarn实例是从另一个目录触发的,而忽略了.yarnrc文件。 我可能建议使用带有该选项的全局.yarnrc文件,这表示我认为这不是适当的解决方案。 我们只应尝试这样做,看看它是否确实像我们之前期望的那样阻止了安装。

也许我们可以从另一个方向来解决这个问题? npm没做的是什么毛线? 为什么npm没有这个问题?

我很欣赏各种各样的想法,他们说Yarn和npm在工作方式上是如此不同,我认为这在这里并不适用。 如果我们能够确定哪个程序包触发了纱线安装(作为其自身安装的一部分),我们可能会找到解决方案。 也许您可以用一些bash脚本替换yarn可执行文件,该脚本记录调用源,cwd和所有传递的参数,然后像往常一样运行yarn以获取有用的调试信息并从那里继续?

最终的解决方案将是我前面提到的并发友好的缓存实现,但是有了更多的调试信息,我们也许可以找到一种更便宜的解决方法。

非常感谢您与@cinderblock的合作,非常感谢。

最终的解决方案将是我前面提到的并发友好的缓存实现,但是有了更多的调试信息,我们也许可以找到一种更便宜的解决方法。

我猜应该有可能提供简化的并发处理-例如,如果在构建步骤中调用了其他纱线实例,则顶层纱线过程中的缓存操作应该很少。 至少,这是我所期望的。 确保在调用任何可能的脚本之前将高速缓存刷新到磁盘上可能会成功。 不确定,但是实现起来有多复杂。

@BYK哦! 我没有考虑过子包在脚本中调用yarn ...的可能性。 您是否认为npm install不会失败的原因是,当其依赖项运行yarn ... ,只有一个实例正在运行?

我设法通过运行解决了问题

yarn cache clean
rm ./yarn.lock
yarn install

但是,此过程需要一段时间,因为它会再次下载所有软件包,因为您a)不再有缓存并且您的锁定文件已被删除。

这可以在您的本地机器上解决,但是如果在位纱上使用纱线,问题仍然存在。 它是干净的图像,从头开始。 在任何情况下,即使正在运行单纱工艺,也需要网络并发。

@BYK

Tere在本期中仅56位参与者,其中包括约5位Yarn维护者和138条评论,其中大多数都是围绕相同的话题进行的。

对于此仓库,这似乎是一个很高的数字。 在所有未解决和已解决的问题中,这是最高的评论总数,也是参加人数最高的评论之一。

而且,在研究(可能)相关问题时,我看到很多人都遇到了可能相关的问题。 不幸的是,这些人中的许多人要么放弃了整个纱线,要么吞下了每当纱线锁定文件改变时花费--network-cocurrency 1的费用。 这就是我为我的一个项目所做的工作,直到我最终弄清楚这是一个下标。

这不是“很多人”,而是某些人,并且对他们来说很重要,但我认为他们都不认为发送单行代码修复仅要求对完全提供的软件进行修复很重要对他们免费。

纱线不是人们可以轻易跳入的项目类型。 这是一个复杂的系统,它以异步的方式处理很多事情,这意味着您不能仅仅调试器并走到堆栈上以查看发生了什么。 因此,要理解此代码库绝非易事,而对其进行修改甚至更加困难。 地狱,到目前为止,我已经花了几天的时间来阅读代码,而我仍然没有足够的信心提交带有相关测试的简单补丁。 鉴于我已有超过20年的经验,并且代码阅读是我的专长之一,所以我不会给一般的开发人员最大的机会。

换句话说,对于不熟悉项目内部工作的人来说,对您而言,快速,简单的单行修复可能是一个大型的多日项目。 在此之前,我提到了各个社区中存在的隐式策略。 在各种开放源代码项目中,至少有一些PR被拒绝,因为我没有遵循某些协议,没有编写正确的测试,遵守正确的规范,甚至只是因为修复了一些未记录的编码标准。 作为局外人为大型项目做出有意义的贡献可能是一个挑战。

如果这确实是单行修复程序,那么编写该修复程序而不是写一篇很长的文章批评其他人没有这样做会更快吗?

如果我们能够确定哪个程序包触发了纱线安装(作为其自身安装的一部分),我们可能会找到解决方案。

我有exibits这种行为的一个包的例子在这里,虽然我没有看到yarn install在那里(除非bob build这样做,虽然它也表现出这个问题,回来时,该命令是"prepare": "node ./scripts/generate-mappings", )。

最终的解决方案将是我前面提到的并发友好的缓存实现,但是有了更多的调试信息,我们也许可以找到一种更便宜的解决方法。

如果检测到这种情况(假设可以检测到),那么一个很好的起点就是警告。 并发友好的缓存似乎必须由纱线社区的至少一个成员集中精力。

更新找到了一个行之有效的解决方法。 不理想,但可以。

CircleCI中也存在这个问题,这是一个大问题。 该问题似乎与使用托管在github.com以及Linux上的软件包(可在OSX上运行)有关。 mutexnetwork-concurrency选项无效。

“ my-js-lib”:“ ssh://[email protected] :dgobaud / my-js-ib#1.0.0”

如果我删除它在CircleCI中有效。 在本地,它可以在带有纱线1.17.0的OSX上使用。

但是它在带有节点12.8.1和yarn 1.17.3的CircleCI上不起作用(圆圈图像circleci / node:latest)

或使用Node 8.15.0和yarn 1.12.3(circle image circleci / node:8.15.0)

#!/bin/bash -eo pipefail
yarn install --mutex network --network-concurrency 1
yarn install v1.12.3
[1/4] Resolving packages...
warning Resolution field "[email protected]" is incompatible with requested version "mixin-deep@^1.2.0"
warning Resolution field "[email protected]" is incompatible with requested version "set-value@^2.0.0"
warning Resolution field "[email protected]" is incompatible with requested version "set-value@^0.4.3"
[2/4] Fetching packages...
info [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...
[4/4] Building fresh packages...
$ cd functions && yarn install
yarn install v1.12.3
[1/5] Validating package.json...
[2/5] Resolving packages...
warning Resolution field "[email protected]" is incompatible with requested version "mixin-deep@^1.2.0"
warning Resolution field "[email protected]" is incompatible with requested version "set-value@^2.0.0"
warning Resolution field "[email protected]" is incompatible with requested version "set-value@^2.0.1"
[3/5] Fetching packages...
[1/5] Validating package.json...
[2/5] Resolving packages...
[3/5] Fetching packages...
error https://registry.yarnpkg.com/lodash/-/lodash-4.17.15.tgz: Extracting tar content of undefined failed, the file appears to be corrupt: "ENOENT: no such file or directory, chmod '/home/circleci/.cache/yarn/v4/npm-lodash-4.17.15-b447f6670a0455bbfeedd11392eff330ea097548/node_modules/lodash/_arrayReduceRight.js'"
info Visit https://yarnpkg.com/en/docs/cli/install for documentation about this command.
info There appears to be trouble with your network connection. Retrying...
error Command failed with exit code 1.
info Visit https://yarnpkg.com/en/docs/cli/install for documentation about this command.
Exited with code 1

在CircleCI /节点上,--network-concurrency 1成功,--network-concurrency 8成功

有人可以帮助我理解为什么Yarn需要在EEXIST和EOENT上失败吗?

在EEXIST的情况下,我希望Yarn发出警告,然后覆盖该文件。
对于EOENT,我希望Yarn创建丢失的文件夹(通常是问题的原因)。

我了解它可能会有副作用,因此也许可以通过标记来使这种行为更加严格(反之亦然)。

但是,保持这些错误的意义何在? 它们对任何人都没有用。

@BYK抱歉,我刚刚看到了您的评论

我不知道这样的错误,如果已经报告过,您能指出我吗? --mutex工作方式是防止使用同一互斥量的任何其他yarn实例运行,直到第一个实例完成。 因此,您说的(不是您的描述)对我来说听起来像是“按预期工作”。

这是bug: https : //github.com/yarnpkg/yarn/issues/2629#issuecomment -481297806中提到的

本期只有56人参加

好吧,我想这很公平

这个错误仍然存​​在于yarn v1.19.1中。 我不明白为什么纱队无法修复这个非常麻烦的错误。
这是我的.yarnrc ,但无济于事:

save-prefix ""
--install.check-files true
--add.check-files true
--remove.check-files true
--install.frozen-lockfile true
--add.frozen-lockfile true
--remove.frozen-lockfile true
--install.mutex network
--install.mutex file

我刚刚发现运行npx lerna clean && ./yarn-install-in-loop.sh有所帮助。
清理(​​删除)我的monorepo中的所有node_modules目录确实有帮助。

@gitowiec可以确认。 我的容器化yarn install调用是在文件系统上进行数据竞争,每次将yarn限制.yarnrc文件的尝试均失败。 我要放弃并回到npm

我发现我的问题是从git存储库到多个级别都有包依赖关系(即我的包-> git包-> git包-> git包)。 另外,与npm相比,安装过程中的缓存效果不佳(npm仅检出一次,但在同一安装过程中纱线检出多次是同一包的多次)。
我要回到npm。 从v6开始,效果很好。

如上所述,这个问题仍然存在。 这是我们为circleci添加到config.yml中以使测试通过的内容:
- run: name: Yarn Install source ~/setyarnpath.sh i=5; until yarn; do echo "Yarn failed. Retrying..."; ((i--)); if [[ "$i" == '0' ]]; then break; fi; done

我遇到了同样的问题。 使用macOS和docker-compose,并在其中包含我的代码和node_modules的主机[1]卷中。

将node_modules更改为匿名卷内,但我想命名卷也可以。 而且现在看来运行良好,并且安装依赖项的速度更快。

我的docker-compose文件从:

services:
  ...
  web:
    build: .
    volumes:
      - .:/home/example
    ports:
      - "3000:3000"
    ...

至:

services:
  ...
  web:
    build: .
    volumes:
      - .:/home/example
      - /home/example/node_modules
    ports:
      - "3000:3000"
    ...

[1] https://success.docker.com/article/different-types-of-volumes

我看到最近的yarn有一个新错误,我认为这是此问题的新症状。

yarn stdout [1/4] Resolving packages...
yarn stdout [2/4] Fetching packages...
yarn stderr error https://registry.yarnpkg.com/prettier/-/prettier-1.19.1.tgz: Extracting tar content of undefined failed, the file appears to be corrupt: "EEXIST: file already exists, mkdir '/home/pi/.cache/yarn/v6/npm-prettier-1.19.1-f7d7f5ff8a9cd872a7be4ca142095956a60797cb-integrity/node_modules/prettier'"
yarn stdout info Visit https://yarnpkg.com/en/docs/cli/install for documentation about this command.
yarn stderr Process stalled
yarn stderr Active handles:
yarn stderr   - Socket
yarn stderr   - Socket
yarn stderr   - Socket
yarn stderr   - TLSSocket
yarn stderr   - TLSSocket
yarn stderr   - TLSSocket

注意: yarn stderr/out是我的程序给我的env中的yarn输出的前缀

我相信这是相同的问题,因为我的项目可以以与这些新症状正在发生的相同方式(并且旧症状已停止)一致地创建旧症状。

作为参考,在清除纱线缓存和node_modules更新一个特定的git包依赖项之后,会在安装时发生这种情况。

特定的包依赖关系是我实际依赖的另一个git包的依赖关系(两个都有类似的prepare步骤都依赖TypeScript)。 如果我对#master这些依赖项进行更改并执行yarn upgrade --latest ,则会出现问题(以及随后的yarn install

当我手动更新该子程序包(放入完全独立的node_modules文件夹!)时, yarn install再次起作用。 这使我认为yarn意外地由两个进程同时使用了缓存,这导致了我们在本期中看到的问题。

当我使用git依赖安装的2个或多个软件包时,这会发生在我身上。 某种程度上,运行prepare脚本的同一个程序包有多个进程。 另外,在最新版本中,它也会因npm而失败。

Dependencies:
A -> B & C (both by git, with prepare script)
B -> C (by git, with prepare script)

这已经打开了很多年,并在纱线1.22.0上仍然发生。
我只是花了几个小时尝试调试发生的事情而没有任何运气,而且看来我并不是唯一的一个。

我现在看到的唯一解决方案是切换到npm。

@gregory就我而言,我记得在2019年6月,yarn总是会最终安装所需的软件包,即使经过2-4次重新运行才能到达那里。 此外,即使进行了这些重新运行,纱线比npm快。

我将重新运行,直到使用以下命令完成纱线:

while ! yarn install; do echo --- ; done

对我们来说,简单的解决方法是发布一个私有软件包并使用它而不是git链接。 仍然很烦

while ! yarn install; do echo --- ; done

唯一的解决办法是蛮力,真是令人遗憾。

cc @arcanis

尝试进行两次后续的纱线安装,第一次运行,然后失败。

快速,可靠和安全的依赖关系管理。

那是不可靠的。
```[3/5]正在获取软件包...
错误https://registry.yarnpkg.com/lz4/-//lz4-0.6.3.tgz:提取未定义的tar内容失败,文件似乎已损坏:“ ENOENT:没有这样的文件或目录,链接'/ app /.cache/yarn/v6/npm-lz4-0.6.3-78df6bb69a36d7db6c2e849494876ba6e38e66d6-integrity/node_modules/lz4/build/Release/obj.target/build/Release/lz4.node'->'/app/.cache/yarn /v6/npm-lz4-0.6.3-78
df6bb69a36d7db6c2e849494876ba6e38e66d6-integrity / node_modules / lz4 / build / Release / obj.target / lz4.node'“
信息请访问https://yarnpkg.com/en/docs/cli/install以获得有关此命令的文档。
[1/5]正在验证package.json ...
[2/5]正在解决包裹...
[3/5]正在获取软件包...
信息您的网络连接似乎有问题。 正在重试...
info [email protected] :平台“ linux”与此模块不兼容。
info“ [email protected] ”是可选的依赖项,并且兼容性检查失败。 从安装中排除它。
info [email protected] :平台“ linux”与此模块不兼容。
info“ [email protected] ”是可选的依赖项,并且兼容性检查失败。 从安装中排除它。
[4/5]关联依赖项...
[5/5]构建新包装...
$ npm运行prepare:mjs && npm运行prepare:js

[email protected] prepare:mjs /app/.cache/yarn/v6/.tmp/43563e016bb56318ebd76037a0f6ce2f.73d5f4dbffab6f6a27f26c6611e32662c98c2891.prepare
BABEL_ESM = 1 babel src -d。 --keep-file-extension

使用Babel成功编译了39个文件。

[email protected] prepare:js /app/.cache/yarn/v6/.tmp/43563e016bb56318ebd76037a0f6ce2f.73d5f4dbffab6f6a27f26c6611e32662c98c2891.prepare
babel src -d。

使用Babel成功编译了39个文件。


[3/5]正在获取软件包...
错误https://registry.yarnpkg.com/lz4/-//lz4-0.6.3.tgz:提取未定义的tar内容失败,文件似乎已损坏:“ ENOENT:没有这样的文件或目录,链接'/ app /.cache/yarn/v6/npm-lz4-0.6.3-78df6bb69a36d7db6c2e849494876ba6e38e66d6-integrity/node_modules/lz4/build/Release/obj.target/build/Release/lz4.node'->'/app/.cache/yarn /v6/npm-lz4-0.6.3-78
df6bb69a36d7db6c2e849494876ba6e38e66d6-integrity / node_modules / lz4 / build / Release / obj.target / lz4.node'“
信息请访问https://yarnpkg.com/en/docs/cli/install以获得有关此命令的文档。
信息您的网络连接似乎有问题。 正在重试...

```

任何人都知道为什么纱线会打来电话

error https://registry.yarnpkg.com/lz4/-/lz4-0.6.3.tgz: Extracting tar content of undefined failed, the file appears to be corrupt: "ENOENT: no such file or directory, link '/app/.cache/yarn/v6/npm-lz4-0.6.3-78df6bb69a36d7db6c2e849494876ba6e38e66d6-integrity/node_modules/lz4/build/Release/obj.target/build/Release/lz4.node' -> '/app/.cache/yarn/v6/npm-lz4-0.6.3-
  df6bb69a36d7db6c2e849494876ba6e38e66d6-integrity/node_modules/lz4/build/Release/obj.target/lz4.node'"

正确的路径应该是:

/app/.cache/yarn/v6/npm-lz4-0.6.3-78df6bb69a36d7db6c2e849494876ba6e38e66d6-integrity/node_modules/lz4/build/Release/lz4.node

似乎毛线由于某种原因而增加了obj.target/build/Release/ 。 可能与https://github.com/yarnpkg/yarn/commit/0e7133ca28618513503b4e1d9063f1c18ea318e5相关

我遇到了同样令人沮丧和难以调试的错误。 在我的情况下,问题似乎是yarn workspace行为,是由不同软件包中相同依赖项的不同版本引起的(特别是ava版本2和3)。 只有将所有出现的ava升级到最新状态后,我才停止出现此错误。

我正在运行1.22.4 ,并在此问题上停留了几个小时。 我们的monorepo有几个使用相同软件包的模块。 最后通过应用以下内容对其进行了排序:
1)确保所有模块使用相同版本的软件包-即使在devDependencies上,这也肯定会导致崩溃。
2)将所有版本中的所有版本固定在所有package.json文件中。

可以确认1.22.4 。 最初是mocha ,在确保所有软件包都使用相同版本之后,我现在从camelcase生成了错误,我什至没有在我的项目中使用-显然来自yargs ,可能来自Lerna。

错误发生意外错误:“ ENOENT:没有这样的文件或目录,lstat'/ code / project / src / packages / private-package / node_modules / camelcase'”。

请问是否有解决方案? 我们会继续删除20个node_modules和一个yarn.lock进行修复。

请问是否有解决方案? 我们会继续删除20个node_modules和一个yarn.lock进行修复。

我个人已将lerna转换为关于工作区处理的方法。

可以肯定地说,当前的Lerna只是直通纱线。

我可以通过为Ember软件包添加nohoist配置来解决我的问题-我当前的环境使用的是旧版本的Ember,该版本与工作区不兼容。

    "nohoist": [
      "**/ember-package/*ember*",
      "**/ember-package/*ember*/**",
      "**/ember-package/loader.js"
    ]

我认为我们现在在这里有一个最小的复制品: https :

删除yarn.lock然后yarn install也对我有用

这里有什么消息吗? 由于纱的依赖安装失败,我们的CI流程崩溃了,所有管道都失败了。 这是荒谬的。

设置--network-concurrency不能解决任何问题,并且作业可以在干净的机器上运行(没有node_modules,没有yarn .cache)。

@cadavre不做任何保证,但这在v2中可能不是问题,您可以尝试使用

yarn set version 2 && yarn config set nodeLinker node-modules

https://yarnpkg.com/getting-started/install#per -project-install
https://yarnpkg.com/configuration/yarnrc#nodeLinker

在升级了某些vue和firebase依赖项之后,这也刚刚开始发生在我身上。 现在在我的CI和开发机中100%可重复。 添加--network-concurrency 1无法可靠地修复它。 我没有磁盘空间或inode不足。 我在WSL1上。 纱1.22.4。

我通过临时更改缓存目录来修复它,之后我将其删除。

对我来说,这是Docker构建:

RUN yarn install --check-files --cache-folder .ycache && rm -rf .ycache
此页面是否有帮助?
0 / 5 - 0 等级