Yarn: 提取未定义的tar内容失败

创建于 2018-08-27  ·  69评论  ·  资料来源: yarnpkg/yarn

您是否要请求功能或报告错误
运行yarn install来安装节点依赖项时报告错误。 对于严重性而言,考虑到此错误实际上使我无法获取节点依赖关系,因此该错误似乎很关键

目前的行为是什么?
有时会因以下错误而失败:

yarn install v1.9.4
[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 https://registry.yarnpkg.com/lodash/-/lodash-4.17.10.tgz: Extracting tar content of undefined failed, the file appears to be corrupt: "ENOENT: no such file or directory, chmod '/usr/local/share/.cache/yarn/v2/npm-lodash-4.17.10-1b7793cf7259ea38fb3661d4d38b3260af8ae4e7/_cacheHas.js'"
info Visit https://yarnpkg.com/en/docs/cli/install for documentation about this command.
yarn install v1.9.4
[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 https://registry.yarnpkg.com/lodash/-/lodash-4.17.10.tgz: Extracting tar content of undefined failed, the file appears to be corrupt: "EEXIST: file already exists, mkdir '/usr/local/share/.cache/yarn/v2/npm-lodash-4.17.10-1b7793cf7259ea38fb3661d4d38b3260af8ae4e7'"
info Visit https://yarnpkg.com/en/docs/cli/install for documentation about this command.
yarn install v1.9.4
[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 https://registry.yarnpkg.com/fbjs/-/fbjs-0.8.17.tgz: Extracting tar content of undefined failed, the file appears to be corrupt: "ENOENT: no such file or directory, chmod '/usr/local/share/.cache/yarn/v2/npm-fbjs-0.8.17-c4d598ead6949112653d6588b01a5cdcd9f90fdd/lib/resolveImmediate.js'"
info Visit https://yarnpkg.com/en/docs/cli/install for documentation about this command

此错误的发生是具有挑战性的部分。 它并不总是失败,并且具有相同的依赖关系也不会总是失败。 3-5次尝试后,有时安装成功。

如果当前行为是错误,请提供重现步骤。
我尝试在裸机上和node:8-alpine Docker容器中安装依赖项。 两者有时都可能遇到错误。 我已经在加拿大蒙特利尔的个人设备(Mac OS X10.13),AWS EC2实例(Ubuntu 18.04),GCE实例(Ubuntu 16.04)和法国的生产服务器(Debian 8)上对此进行了测试。 。 他们每个人有时都可能遇到此错误。 我也尝试使用yarn.lock和不使用package.json出现有时重现该问题在这个要点。 依赖项较少的项目似乎不会发生此问题。

预期的行为是什么?
成功安装了诸如npm installnpm ci类的所有软件包,这些软件包确定地成功安装,没有任何tar或缓存错误。

请提及您的node.js,yarn和操作系统版本。
经过以下版本测试:
节点:8 LTS,10
纱:1.9.2,1.9.4
操作系统:Ubuntu 18.04 LTS,Ubuntu 16.04 LTS,Debian 8,Mac OSX 10.13
Registrie: registry.yarnpkg.comregistry.npmjs.org ,私有注册表

如果您需要任何其他信息,请随时提出要求。 FWIW,减少网络并发性似乎会产生稍高的成功率,但是不足以断定错误是相关的。 但是,这可能是一个需要研究的领域。 不幸的是,经过几天的故障排除后,我花了所有时间来花时间在此上。 我很不情愿地不得不将我们所有的CI版本迁移回使用npm install / npm ci :(

cat-bug triaged

最有用的评论

我的情况下没有创建~/.npmrc 。 但是重新生成yarn.lock对我有用。

只是,

$ rm yarn.lock && yarn

编辑:两次面对此问题,最终落在这里。 :微笑:

所有69条评论

同样的问题,它也阻止了我的配置项,我们最近更新了纱线1.9.2

@opiation错误的确是随机的,但是我可能已经找到了原因:您的package.json中是否有遥远的git URL,最后没有.git ? 我们有两个,并加上.git解决了这个问题。 不知道为什么错误消息没有直接指出这是问题所在。

另外,也许相关: https :

@adrienharnay ,您可以定义_distant_是什么意思吗? 作为记录,这是我使用的package.json 。 只有一个github依赖项,没有它,我仍然会出错。 我不确定如何将.git附加到非git依赖项,除非我误解了您的建议。

遥不可及,我的意思是从Git安装软件包

你可以试试这个吗?

"storybook-addon-markdown": "https://github.com/mihalik/storybook-addon-markdown.git"

根据我之前的评论,我仍然遇到没有storybook-addon-markdown依赖性的问题。 因此,我不认为此问题源于纱线对git URL的不正确处理。

确实,我读得太快了。 好了,那已经修复了我们的错误,但是我不知道您的错误😕对不起

@opiation是否也更新了yarn.lock文件? 因为我必须这样做

@Titozzzyarn.lock文件,我都会遇到此错误。 我多次删除并重新创建了锁定文件,但无济于事。

我也得到这个,我没有来自git的任何软件包。

我想通过使用软件包的压缩包版本来解决此问题(https://github.com/yarnpkg/yarn/issues/6256),但实际上,自托管的Github企业上的压缩包url会引发上述错误。

github.com托管压缩包以某种方式起作用。 例如
https://github.com/luwes/chameleon/archive/grasshopper-v0.0.1-beta.4.tar.gz

我在一个项目中遇到了同样的问题。 但是,当我删除在安装过程中运行prepare脚本的deps(由于是git urls)时,它将起作用。 这些碰巧指向了git url,但是我认为实际上是prepare似乎启动了更多的yarn install进程,这些进程似乎出于某种原因颠覆了互斥标志。 我想知道这是否是因为其他进程是由根进程启动的,而不是由不同的根进程启动的。 我不知道这些信息是否有帮助,或者它是否确实偏离了基础。 但是我想我会分享我发现的结果。

@khendry我又遇到了这个问题,你是对的,它来自git依赖,它们的package.json中有一个prepare脚本! :+1:

我一直在使用我们拥有的项目进行跟踪,到目前为止,将其范围缩小到并发安装git-fetcher从此处开始。 如果git-fetcher正在安装的软件包与当前正在安装的软件包具有任何相同的依存关系,则将创建竞争条件,其中重复的软件包将同时被释放到脱机缓存中。

我没有足够的代码库来了解正确的修补程序在哪里/什么是正确的,但这只是问题的开始。

有什么消息吗? 我们也面临这个问题。

同样的问题。 将纱线与CI一起使用是不可能的。 每个第二个构建都因此错误而失败😞

尝试删除node_modules,

yarn cache clean
yarn install --network-concurrency 1

感谢分享。 至少是一种解决方法🤗,但如果您希望构建时间合理快速,则没有真正的解决方案😅

我们确实尝试使用--network-concurrency标志没有成功。 因此,这实际上无法解决此特定问题。 该标志以比发生问题的地方更高的级别解决并发问题。

对我来说--network-concurrency 1解决了这个问题。 我知道这是临时解决方法,但可以。 但是值必须完全是1

我说得太早了。 我曾问过队友我们是否尝试过此方法,而不是实际尝试自己,他_非常_确信我们有...他错了,错过了以前的帖子,认为它与互斥锁标志有关,而不是与网络有关。并发。 此后,我们已经重试过,可以确认这似乎确实也为我们解决了这个问题。

设置--network-concurrency 1实际上对我不起作用。

现在,我遇到的唯一解决方法是完全重新生成yarn.lock 。 我得到的错误是:

2.054 Performing "GET" request to "https://<private-artifactory-npm-registry>/@myorg/eslint-plugin-import/-/@myorg/eslint-plugin-import-3.0.0.tgz".
verbose 2.519 Error: https://<private-artifactory-npm-registry>/@myorg/eslint-plugin-import/-/@myorg/eslint-plugin-import-3.0.0.tgz: Extracting tar content of undefined failed, the file appears to be corrupt: "Unexpected end of data"
    at MessageError.ExtendableBuiltin (/Users/me/.nvm/versions/node/v8.12.0/lib/node_modules/yarn/lib/cli.js:237:66)
    at new MessageError (/Users/me/.nvm/versions/node/v8.12.0/lib/node_modules/yarn/lib/cli.js:266:123)
    at Extract.<anonymous> (/Users/me/.nvm/versions/node/v8.12.0/lib/node_modules/yarn/lib/cli.js:59446:14)
    at emitOne (events.js:121:20)
    at Extract.emit (events.js:211:7)
    at Extract.module.exports.Extract.destroy (/Users/me/.nvm/versions/node/v8.12.0/lib/node_modules/yarn/lib/cli.js:135306:17)
    at Extract.module.exports.Extract._final (/Users/me/.nvm/versions/node/v8.12.0/lib/node_modules/yarn/lib/cli.js:135364:34)
    at callFinal (/Users/me/.nvm/versions/node/v8.12.0/lib/node_modules/yarn/lib/cli.js:70270:10)
    at _combinedTickCallback (internal/process/next_tick.js:139:11)
    at process._tickCallback (internal/process/next_tick.js:181:9)

更新:我刚刚发现使用--skip-integrity-check可以绕过此错误。 虽然显然这确实是一个解决方案。 这看起来像是完整性检查逻辑中的一个重要错误。

我正在使用[email protected][email protected]

@arcanis @ rally25rs有关此错误的更多详细信息:

screen shot 2018-10-28 at 10 04 18 am

screen shot 2018-10-28 at 10 08 07 am

因此,考虑到sha1相同,这对我来说似乎很奇怪,因为它的完整性校验和失败:

Error: sha1-Sl7Hxk364iw6FBJNus3uhG2Ay8Q= integrity checksum failed when using sha1: wanted sha1-Sl7Hxk364iw6FBJNus3uhG2Ay8Q= but got sha1-AHoWKXweP+Pg9aZkGBsAjFruGaM=. (77 bytes)
    at Transform.on (/Users/shargrove/.nvm/versions/node/v8.12.0/lib/node_modules/yarn/lib/cli.js:32831:19)
    at emitNone (events.js:111:20)
    at Transform.emit (events.js:208:7)
    at endReadableNT (_stream_readable.js:1064:12)
    at _combinedTickCallback (internal/process/next_tick.js:139:11)
    at process._tickCallback (internal/process/next_tick.js:181:9)

更新:看到上述内容后,我确认--skip-integrity-check绕过此错误。 看起来完整性检查逻辑中有一个更严重的错误。

@opiation出于好奇,可以粘贴package.json吗? 您是否在任何地方使用以下“替代”技术?

"dependencies": {
  "foo": "npm:@myorg/foo"
}

例如,我正在使用它:

"eslint-plugin-import": "npm:@myorg/eslint-plugin-import",

而且,这是我看到错误的程序包。。所以,我想知道这是否相关吗?

@hulkish ,根据我的第一篇文章,这是我用package.jsonyarn.lock创建的要点,以及我运行的所有测试均产生了所描述的错误。 为了明确起见, failing_test.sh每一行都可能遇到此错误,但并不一致。 遇到错误,可能不得不多次尝试。 只是为了在此线程中使用它,我将在下面总结每个测试:

测试失败

  • yarn install
  • yarn install --frozen-lockfile
  • yarn install --pure-lockfile
  • yarn install --mutex network
  • yarn install --network-concurrency 1
  • 以上所有测试均预先带有rm yarn.lock
  • 所有在上述测试node:alpine集装箱git安装(在这个线程创建的时间高山)
  • 所有在上述测试node:8-alpine集装箱git安装

至于“替代”技术,我不确定你的意思。 如果您在依赖项值中引用_protocol_-like前缀(例如示例中的npm: ),那么可以,一个dev依赖项使用github包:

"storybook-addon-markdown": "github:mihalik/storybook-addon-markdown"

但是,即使删除了dev依赖项,仍然会遇到错误,因此这似乎并不相关。

@holyxiaoxin喊-添加--network-concurrency 1为我的CI解决了此问题👍

ping @imsnif@hulkish的评论似乎与完整性检查有关

@khendry在我们的git依赖项上不再使用prepare可以解决我们的ci问题,而--network-concurrency 1,--child-concurrency 1和--skip-integrity-check还不够

我们能够使用npm config set always-auth true修复此问题(如此处所述)。 尽我所知,默认情况下,npm将提供您的凭据_only_用于发布软件包,而不是用于获取软件包。 出于某些原因,yarn以前不尊重该设置,但现在已经遵守。

我最近遇到了这个问题,使用yarn 1.12.3node 10.13.0 。 在尝试了上述许多解决方案后,无济于事,删除/重新生成yarn.lock文件有效。

我也遇到了类似的问题。 删除@mvonballmo建议的yarn.lock是使它运行的唯一方法。 它仍然没有完全正常工作。

yarn install v1.12.3
[1/4] Resolving packages...
[2/4] Fetching packages...
error https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.23.tgz: Extracting tar content of undefined failed, the file appears to be corrupt: "ENOSPC: no space left on device, write"
info Visit https://yarnpkg.com/en/docs/cli/install for documentation about this command.
yarn install v1.12.3
info No lockfile found.
[1/4] Resolving packages...
warning celebrate > joi > [email protected]: This version is no longer maintained. Please upgrade to the latest version.
warning xo > eslint > file-entry-cache > flat-cache > [email protected]: CircularJSON is in maintenance only, flatted is its successor.
[2/4] Fetching packages...
error https://registry.yarnpkg.com/babel-runtime/-/babel-runtime-6.26.0.tgz: Extracting tar content of undefined failed, the file appears to be corrupt: "ENOSPC: no space left on device, write"
info Visit https://yarnpkg.com/en/docs/cli/install for documentation about this command.

朋友们,

因此,根据此处报告的不同错误来判断-实际上,这似乎可能是几个不同的问题:
ENOSPC: no space left on device, write
wanted sha1-Sl7Hxk364iw6FBJNus3uhG2Ay8Q= but got sha1-AHoWKXweP+Pg9aZkGBsAjFruGaM= (顺便说一句,很难看,但是这些不一样),
the file appears to be corrupt: "Unexpected end of data" ,等等。

尽管我很欣赏这些情况可能发生在相似的地方,但它们可能是由完全不同的问题和/或环境引起的。 完整性检查(特别是错误回调上的untarStream-感谢详细的调试@hulkish!)是一个可以收集许多错误的漏斗,并且很难向用户提供超出实际错误的反馈。

对于完整性迁移(用新的完整性字段填充旧式yarn.lock )来说,以上情况尤其如此,因为此一次性过程(一次假定它成功通过c)比常规安装要占用更多网络资源(它遍历所有没有integrity字段的软件包,并获取其注册表清单)。

关于比赛条件的理论很有趣,而且绝对有可能,我很乐意进一步研究它们。 恐怕@opiation的复制对我不起作用。 我现在正在运行它的第7个本地安装,它仍然可以正常工作(我没有运行脚本,而是运行yarn来与package.json和yarn.lock一起安装-我理解这还是给您造成了问题吗?)

@opiation-您还能重现此问题吗? 在相同条件下? 也许我们可以降低分辨率,并且您可以告诉我您所做的一切,直到执行此命令的命令?

此线程上的其他任何人都有他们可以共享的设置,即使部分一致地重现此问题? 我很高兴深入浅出。

我在CI系统中遇到了相同的错误消息:

2018-11-12T04:32:13.0386630Z error https://pkgs.dev.azure.com/JeremyTCD/_packaging/Main/npm/registry/cheerio/-/cheerio-0.22.0.tgz: Extracting tar content of undefined failed, the file appears to be corrupt: "Unexpected end of data"
2018-11-12T04:32:20.4838361Z 
2018-11-12T04:32:20.4852626Z     yarn install v1.12.3                                                                    
2018-11-12T04:32:20.4853491Z     [1/4] Resolving packages...                                                             
2018-11-12T04:32:20.4855400Z     [2/4] Fetching packages...                                                              
2018-11-12T04:32:20.4856037Z     info Visit https://yarnpkg.com/en/docs/cli/install for documentation about this command.

设法弄清楚了我的特定问题。 以为我会在这里给遇到类似问题的任何人留下笔记:

原因

在向项目添加新的依赖项之后,我在本地计算机上调用了yarn install[email protected])。 由于本地.npmrc ,yarn恢复了我的私人注册中心的依赖关系。 生成的yarn.lock包含以下几行:

[email protected]:
  version "0.22.0"
  resolved "https://pkgs.dev.azure.com/JeremyTCD/_packaging/Main/npm/registry/cheerio/-/cheerio-0.22.0.tgz#a9baa860a3f9b595a6b81b1a86873121ed3a269e"
  dependencies:
  ...

请注意如何从专用存储库中解析软件包。 在我的CI机器上,我没有.npmrc的私有注册表凭据。 这是错误消息的原因:

https://pkgs.dev.azure.com/JeremyTCD/_packaging/Main/npm/registry/cheerio/-/cheerio-0.22.0.tgz: Extracting tar content of undefined failed, the file appears to be corrupt: "Unexpected end of data"

我修复了本地.npmrc并重新生成了yarn.lock

[email protected]:
  version "0.22.0"
  resolved "http://registry.npmjs.org/cheerio/-/cheerio-0.22.0.tgz#a9baa860a3f9b595a6b81b1a86873121ed3a269e"
  integrity sha1-qbqoYKP5tZWmuBsahocxIe06Jp4=

请注意,现在如何从默认NPM注册表中解析该软件包。 一旦执行此操作,该错误就会停止。

固定

如果问题的原因与我的相同,则可以:

  • 将所需的凭据添加到您的CI机器或
  • 调整您的本地.npmrcyarn config list将打印纱线恢复的注册表),然后重新生成yarn.lock

笔记

错误消息可能更具体。

编辑:最初认为回滚Yarn将解决问题-意外地将我的错误提交链接到此问题。 纱线最终不是问题。

TL; DR:尝试删除yarn.lock文件并再次生成。

尝试在Netlify上构建时出现错误: Extracting tar content of undefined failed, the file appears to be corrupt: "Unexpected end of data"

删除node_modules文件夹和yarn.lock文件,然后通过yarn install再次生成它们,我得到了一个具有不同依赖关系的新yarn.lock文件。 Netlify使用此新文件成功构建了我的项目。

@imsnif同意这里似乎报告了多个不同的问题。 我相信我正在处理的一个项目有一个复制案例,引发了@khendry在此处概述的问题

我在一个项目中遇到了同样的问题。 但是,当我删除在安装过程中运行prepare脚本的deps(由于是git urls)时,它将起作用。 这些碰巧指向了git url,但是我认为实际上是prepare似乎启动了更多的yarn install进程,这些进程似乎出于某种原因颠覆了互斥标志。 我想知道这是否是因为其他进程是由根进程启动的,而不是由不同的根进程启动的。

共享下面的复制步骤,以希望您可以重现该问题。 如果您需要更多信息,请与我们联系。

复制步骤

  1. 在新的测试文件夹中,使用节点v10.3.0和yarn v1.12.3 ,从该要点下载package.jsonyarn.lock
  2. 运行rm -rf ~/.cache/yarn* node_modules/ && yarn install --frozen-lockfile --network-concurrency 16 (清除缓存并为可靠的环境预先安装节点模块。将并发设置为高以增加出现问题的机会)
  3. 观察如下输出:
yarn install v1.12.3
[1/5] Validating package.json...
[2/5] Resolving packages...
[3/5] Fetching packages...
warning Pattern ["object-assign@latest"] is trying to unpack in the same destination "/home/ocderby/.cache/yarn/v4/npm-object-assign-4.1.1-2109adc7965887cfc05cbbd442cac8bfbb360863/node_modules/object-assign" as pattern ["object-assign@^4.1.0","object-assign@^4.1.0","object-assign@^4","object-assign@^4.1.1","object-assign@^4.1.0","[email protected]","object-assign@^4.1.0","object-assign@^4.1.1","object-assign@^4.1.0","object-assign@^4.1.0","object-assign@^4.1.0","object-assign@^4.1.0","object-assign@^4.1.0","object-assign@^4.1.0","object-assign@^4.1.0","object-assign@^4.1.1","object-assign@^4.1.1","object-assign@^4.0.1","object-assign@^4.0.1","object-assign@^4.1.0","object-assign@^4.0.1","object-assign@^4.0.1","object-assign@^4.0.1","object-assign@^4.1.0","object-assign@^4.0.1"]. This could result in non-deterministic behavior, skipping.
info No lockfile found.
[1/4] Resolving packages...
warning eslint > file-entry-cache > flat-cache > [email protected]: CircularJSON is in maintenance only, flatted is its successor.
warning jest > jest-cli > prompts > [email protected]: Please upgrade to kleur<strong i="26">@3</strong> or migrate to 'ansi-colors' if you prefer the old syntax. Visit <https://github.com/lukeed/kleur/releases/tag/v3.0.0\> for migration path(s).
[2/4] Fetching packages...
error https://registry.yarnpkg.com/lodash/-/lodash-4.17.4.tgz: Extracting tar content of undefined failed, the file appears to be corrupt: "ENOENT: no such file or directory, chmod '/home/ocderby/.cache/yarn/v4/npm-lodash-4.17.4-78203a4d1c328ae1d86dca6460e369b57f4055ae/node_modules/lodash/_shortOut.js'"
info Visit https://yarnpkg.com/en/docs/cli/install for documentation about this command.

其他注意事项

我已经尝试了多种方法,这是我的笔记:

  1. 这个问题对我来说不是100%的时间。 如上所述,增加使用的网络并发性似乎使该问题更有可能发生。
  2. 使用在软件包注册表中发布的react-textarea-autosize版本可以使问题消失(似乎要确认上面报告的
  3. 设置--mutex file似乎根本没有帮助
  4. 如上文所述,如果我将网络并发限制为1 (通过--network-concurrency 1参数),则所有安装都正确,尽管速度较慢。
  5. 我已经在节点v8.12.0上用纱线v1.9.4和v1.12.3复制了它。 它在Circle CI 2.0上运行的circleci/node:8-stretch docker映像上运行。

在将yarn更新为1.12.3之后,我最近开始看到此错误。
看到我的travis-ci构建失败https://travis-ci.org/ankurk91/vue-cleave-component

$ yarn install --non-interactive
yarn install v1.12.3
[1/5] Validating package.json...
[2/5] Resolving packages...
[3/5] Fetching packages...
error https://registry.yarnpkg.com/har-validator/-/har-validator-5.1.2.tgz: Extracting tar content of undefined failed, the file appears to be corrupt: "Unexpected end of data"
info Visit https://yarnpkg.com/en/docs/cli/install for documentation about this command.
The command "yarn install --non-interactive" failed and exited with 1 during .

仅使用[email protected]会发生这种情况。
如果我以某种方式获得成功,我会回发。
PS。
它特定于har-validator软件包。

我也得到
error https://registry.yarnpkg.com/har-validator/-/har-validator-5.1.2.tgz: Extracting tar content of undefined failed, the file appears to be corrupt: "Unexpected end of data"
卷曲我得到了404 for https://registry.yarnpkg.com/har-validator/-/har-validator-5.1.2.tgz
但是在我的浏览器中我可以下载它。
我的一台服务器,如果我将yarn降级到1.12.1,它就开始工作,但是在另一台服务器上,即使我降级该错误仍然相同(两种情况下,我都删除了yarn cache dir)。
是否有可能是某种cloudflare(config)问题?

不,此特定实例(您和@ ankurk91的一个实例)是由har-validator尚未发布引起的(请参阅#6694)。

在添加另一个回购作为依赖项( "@team/myproject": "git+ssh://[email protected]/team/myproject.git#master", )之后,仅在CI环境中出现此错误。 我可以确认

  • 向我的CI脚本中添加--network-concurrency 1可以解决此问题,但是当然会使构建非常慢
  • 运行yarn install --network-concurrency 16也会在本地引发错误

清理缓存或重置yarn.lock对我都没有影响

编辑:不幸的是,似乎--network-concurrency 1修复不一致

同样的错误
易于复制:
yarn upgrade typescript@^2.8

然后:
yarn upgrade [email protected]

我在安装最后一个软件包时做了ctrl + c。当我再次尝试“纱线升级”时,我得到:


yarn upgrade v1.12.3
[1/4] 🔍  Resolving packages...
[2/4] 🚚  Fetching packages...
error https://registry.yarnpkg.com/typescript/-/typescript-2.8.4.tgz: Extracting tar content of undefined failed, the file appears to be corrupt: "ENOENT: no such file or directory, stat '/Users/u/Library/Caches/Yarn/v4/npm-typescript-2.8.4-0b1db68e6bdfb0b767fa2ab642136a35b059b199/node_modules/typescript/lib/lib.d.ts'"
info Visit https://yarnpkg.com/en/docs/cli/upgrade for documentation about this command.

更新:以下是由于我们的Sonatype Nexus安装中的元数据损坏而引起的,因此不是纱线问题。 留给上下文。

在我们的CI环境中可以看到多个软件包。 纱线1.12.3和节点11.1:

responsive-props-1.2.2.tgz: Extracting tar content of undefined failed, the file appears to be corrupt: "Invalid tar header. Maybe the tar is corrupted or it needs to be gunzipped?"
styled-components-breakpoint-2.1.3.tgz: Extracting tar content of undefined failed, the file appears to be corrupt: "Invalid tar header. Maybe the tar is corrupted or it needs to be gunzipped?"

我遇到了类似的问题,但是我得到了..该文件似乎已损坏:“ EBUSY:...”。
我清除了整个纱线缓存,然后重新运行,但仍然遇到相同的错误,因此似乎纱线正在创建文件并将其自身锁定。

这是在Windows 10上。

yarn install v1.10.1 [1/4] Resolving packages... [2/4] Fetching packages... error https://registry.yarnpkg.com/fbjs/-/fbjs-0.8.17.tgz: Extracting tar content of undefined failed, the file appears to be corrupt: "EBUSY: resource busy or locked, open 'c:\\src\\yarn\\cache\\v2\\npm-fbjs-0.8.17-c4d598ead6949112653d6588b01a5cdcd9f90fdd\\lib\\UserAgent.js'" info Visit https://yarnpkg.com/en/docs/cli/install for documentation about this command.

我通过运行有效的“ yarn --pnp”进行了变通。 奇怪的是,那应该是更新的,并且可能是更不稳定的代码。

删除yarn.lock对我有用。

大家好,只是遇到了同样的问题。 通过从主目录中删除.npmrc来解决。

rm ~/.npmrc

@binchik-这是唯一对我

谢谢@binchik ,这对我

因此,在回到导致yarn失败的一系列事件之后,我相信我在package.json中执行了一个npm脚本,如下所示:

"audit": "npm audit"

这完全是愚蠢的,因为我从未在该项目中使用npm 。 执行此命令后,一切(包括npm)都将开始出现随机故障,并且永远无法完成,这与该线程中其他人员的经验一致。

如果重现该错误的人可以进行调查并弄清楚到底是什么引起了该问题,那将非常有帮助! 我已经尝试过,但无法复制它🙁

一些指针:

  • 我们需要弄清楚失败后进入untarStream原因-我的假设是也许我们正在尝试将json响应作为tarball处理(https://github.com/yarnpkg/yarn/blob/master /src/fetchers/tarball-fetcher.js#L146-L150)

  • 我认为.npmrc唯一可能重要的是auth令牌。 如果有人可以通过从.npmrc (而不是整个文件)中删除auth令牌行来确认问题是否消失,我将不胜感激

FWIW,我今天遇到了这个问题。 一些东西:

  • 删除.npmrc修复它。 文件中唯一要做的事就是使用auth令牌。
  • npm install失败了,它记录了一个401未经授权的错误。
  • 删除.npmrc文件后, npm install再次工作。

根据我的发现@deleteme ,这听起来更像是错误的副产品,而不是原因。

我遇到过是否带有.npmrc或.yarnrc

鉴于这个问题突然比平时出现的多,并且在npm注册表中特别容易

@arcanis今天才开始遇到这个问题。 我可以确认,通过删除npmrc auth令牌行可以解决此问题。

我的情况下没有创建~/.npmrc 。 但是重新生成yarn.lock对我有用。

只是,

$ rm yarn.lock && yarn

编辑:两次面对此问题,最终落在这里。 :微笑:

在我的情况下,我使用CircleCI, circleci/node:10.11.0 docker image和[email protected] ,并且没有~/.npmrc 。 谢谢@achillesrasquinha。 这个对我有用。

我已经有一个星期面对这个问题了。 yarn install --network-concurrency 1解决了问题,但是非常慢。

顺便说一句,此信息可能对任何人都有帮助。
我在项目中使用了内部自定义npm软件包。 总是我遇到像.cache/v4但是每次失败都显示不同的包名称。 花了很多时间后,我发现一个随机观察。
我的项目和自定义npm软件包使用相同的yarn build来构建捆绑包。 我已经将自定义软件包构建脚本名称更新为yarn build:p 。 然后它开始工作。 我跑了很多次。 它没有失败。 不知道这两个是如何依赖的,但对我有用。

删除.npmrc并非对我有用。 我还必须删除我的yarn.lock文件,例如@davidalee 。 我不知道他为什么为此不赞成🤷

不知道删除.npmrc是否对我有影响。

我不是很喜欢删除yarn.lock文件,所以我只是从yarn.lock删除har-validator软件包,然后重新运行yarn这为我解决了这个问题。

rm yarn.lock为我工作。 包har-validator-5.1.2面临的问题。

error https://registry.yarnpkg.com/har-validator/-/har-validator-5.1.2.tgz: Extracting tar content of undefined failed, the file appears to be corrupt: "Unexpected end of data"

嗨,har-validator-5.1.2已从npm取消发布,如此处所述https://github.com/ahmadnassri/node-har-validator/issues/112#issuecomment -437378269,因此您需要通过yarn upgrade升级依赖项yarn.lock具有相同的效果)。

我想这个问题可以解决。

如我的初始问题报告中所述,删除yarn.lock对我不起作用。 也不删除.npmrc 。 此外,据我所知, node:10-alpine码头工人镜像没有或没有创建.npmrc文件。

最后,错误不仅限于har-validator软件包。 实际上,我从未在该软件包中遇到过它。 我确实遇到了lodashfbjsreact以及其他许多软件包。

在以前的评论中总结了仍然可以可靠地重现此问题的尝试。 记录下来,在使用docker测试时,我可以重现该问题,因此仅包括package.json ,没有yarn.lock ,没有.npmrc ,没有node_modules 。 我仍然可以在本地计算机,GCE实例和Gitlab.com的CI上重现此问题。 --network-concurrency=1--skip-integrity-check似乎都无法为我解决问题。 因此,我会毫不犹豫地建议关闭此问题,尤其是由于所有上述测试都使用npm install ,假设yarn install应该代替npm install给定相同的package.json

问题在于npm注册表通常不稳定,并返回错误(当多个请求明显触发时,错误率更高-也许是某种类型的per-ip节流?)。 由于某些原因,它们没有被Yarn正确捕获,后者会盲目地尝试对它们进行哈希处理并将它们与预期的哈希进行比较-失败。

因此,Yarn中存在一个错误(我们应该打印一个更有用的错误),但是鉴于真正的问题是npm注册表的不稳定程度,所以目前这不是我的优先事项(不过,我肯定会评论一下PR!) 。

至于为什么它在npm中不会发生:他们重试请求,直到工作。 Yarn有一种机制可以做到这一点,但在专门计算哈希的部分却没有。

我建议使用脱机镜像来停止依赖npm注册表进行安装。

https://github.com/yarnpkg/yarn/pull/6817将通过显示注册表返回的实际状态代码来“修复”该问题。 我希望它是稳定的,而不是盲目地重试,直到它起作用为止,所以我没有添加重试代码,但是,如果对地平线没有任何改进,我们可能必须这样做。

同时,由于错误消息将更改并且该线程变得很大,因此我将结束本讨论(我们可以打开新的线程来分别讨论每个状态代码)。

我的情况下没有创建~/.npmrc 。 但是重新生成yarn.lock对我有用。

只是,

$ rm yarn.lock && yarn

谢谢,
rm -rf ./yarn.lock && yarn
为我工作!

如果它可以帮助任何人:

  • 当我忘记登录npm时,我也发生了同样的错误(doh!)

对我来说,此问题已通过service docker restart (Ubuntu 18.04)解决。

我一直遇到这样的间歇性和不确定性错误。 我重新启动构建,没有其他更改,它可以正常工作。 有没有人可以替代纱线?

在进行PR将我们的基本docker映像从node:8.12.0node:8.13.0之后,我开始在每个版本上都遇到相同的错误(每次都在不同的npm模块上出现错误)。 我检查了这些节点docker映像,发现预安装的yarn版本从v1.9.4更改v1.12.3 。 请参阅:关联的git commit 。 我尝试了此线程中的一些建议修复程序,但没有运气解决错误。 我可以通过简单地Dockerfile中v1.9.4来解决此问题。 我知道这种纱线对其他人来说是有问题的,但是对我来说,最新的纱线引发了这个问题。 我会注意到我使用的是.npmrc文件,该文件提供通过jfrog构件访问私有模块的凭据,并且我们已将构件设置为镜像/代理所有npm模块。

为什么关闭? 仍然打破CI

同时,由于错误消息将更改并且该线程变得很大,因此我将结束本讨论(我们可以打开新的线程来分别讨论每个状态代码)。

我继续锁定该线程,因为在我看来它已经超出了它的用处。 提醒一句:

  • 如果出现此错误消息,则可能使用的是旧版本。 升级到1.13+以获取真实的错误消息。 注册表可能出于某种原因而返回HTTP 500。

  • 如果您仍然遇到似乎来自Yarn本身的错误,请打开一个新线程,并详细说明如何重现该问题。 如果您不提供复制品,我们将无法提供修复程序,并且可能会要求您进行调查。

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