Yarn: Не удалось извлечь содержимое tar из undefined

Созданный на 27 авг. 2018  ·  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 . Оба могут иногда сталкиваться с ошибкой. Я тестировал это на своем личном устройстве в Монреале, Канада (Mac OS X10.13), на экземпляре AWS EC2 (Ubuntu 18.04), на экземпляре GCE (Ubuntu 16.04) и на производственном сервере во Франции (Debian 8). . Каждый из них иногда может столкнуться с этой ошибкой. Я также пытался установить с yarn.lock и без него, но безрезультатно. Найдите package.json который, кажется, иногда воспроизводит проблему в этой сути . Проблема не возникает с проектами с меньшим количеством зависимостей.

Какое поведение ожидается?
Успешная установка всех пакетов, например npm install или npm 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
Реестр: registry.yarnpkg.com , registry.npmjs.org , частный реестр

Если вам нужна дополнительная информация, не стесняйтесь запрашивать ее. FWIW, уменьшение сетевого параллелизма, кажется, дает немного более высокий коэффициент успешности, но недостаточно последовательно, чтобы сделать вывод, что ошибки связаны. Однако это может быть область для исследования. К сожалению, после нескольких дней устранения неполадок я исчерпал все время, которое мог позволить себе потратить на это. Мне неохотно пришлось перенести все наши сборки CI обратно на использование npm install / npm ci :(

cat-bug triaged

Самый полезный комментарий

В моем случае ~/.npmrc создано. Но регенерация yarn.lock у меня сработала.

Просто,

$ rm yarn.lock && yarn

РЕДАКТИРОВАТЬ: столкнулся с этой проблемой дважды, только чтобы приземлиться здесь. :улыбка:

Все 69 Комментарий

Та же проблема, он тоже блокирует мой CI, мы недавно обновились до yarn 1.9.2

@opiation Ошибка действительно случайная, но я, возможно, нашел причину: есть ли у вас удаленные URL-адреса git в вашем package.json без .git в конце? У нас их было два, и добавление .git устранило проблему. Не уверен, почему в сообщении об ошибке прямо не говорится, что это проблема.

Также, возможно, связано: https://github.com/yarnpkg/yarn/issues/5536

@adrienharnay , можешь определить, что ты подразумеваешь под _distant_? Для записи вот тот package.json я использовал . Есть только одна зависимость от github, и без нее я все равно получаю ошибки. Я не уверен, как добавить .git к зависимостям, отличным от git, если только я не понял ваше предложение.

Отдаленный - не подходящее слово, я имел в виду только пакеты, установленные из Git 🙂

Не могли бы вы попробовать это?

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

Согласно моему предыдущему комментарию, я все еще сталкиваюсь с проблемой без зависимости storybook-addon-markdown . Таким образом, я не считаю, что эта проблема связана с неправильной обработкой URL-адресов git.

Действительно, я слишком быстро читаю. Что ж, это исправило нашу ошибку, но я понятия не имею о вашей 😕 Извините

@opiation Вы тоже обновили файл yarn.lock? Потому что я должен был это сделать

@Titozzz , я сталкиваюсь с этой ошибкой с файлом yarn.lock и без него. Я несколько раз удалял и воссоздавал файл блокировки, но безрезультатно.

Я тоже это понимаю, и у меня нет пакетов от git.

Я хотел обойти эту проблему (https://github.com/yarnpkg/yarn/issues/6256), используя архивные версии пакетов, но на самом деле указанная выше ошибка выдается для URL-адресов tarball на собственном предприятии Github.

Архивы, размещенные на github.com, каким-то образом работали. например
https://github.com/luwes/chameleon/archive/grasshopper-v0.0.1-beta.4.tar.gz

Я наблюдаю ту же проблему с нашим проектом. Однако, когда я удаляю deps, которые запускают скрипт prepare как часть установки (из-за URL-адресов git), он работает. Они указывают на URL-адреса git, но я думаю, что на самом деле prepare запускают больше процессов yarn install которые по какой-то причине нарушают флаг мьютекса. Интересно, не потому ли, что другие процессы запускаются корневым процессом, а не другими корневыми процессами. Я не знаю, помогает ли эта информация или она действительно не соответствует действительности. Но я решил, что все равно поделюсь тем, что нашел.

@khendry У меня снова проблема, и вы правы, она возникает из-за зависимостей git, у которых есть сценарий prepare в их package.json! : +1:

Я отслеживал это вниз с проектом у нас и до сих пор сузил его до одновременного установить ГИТ-сборщик начинается здесь . Если пакет, устанавливаемый с помощью git-fetcher, имеет какие-либо из зависимостей текущего устанавливаемого пакета, создается состояние гонки, при котором дублированные пакеты одновременно распаковываются в автономный кеш.

Я не видел достаточно кода, чтобы понять, где и как правильно исправить, но это начало проблемы.

Есть новости по этому поводу? Мы тоже сталкиваемся с этой проблемой.

Та же проблема. Нельзя использовать пряжу с КИ. Каждая вторая сборка завершалась с этой ошибкой 😞

попробуйте удалить 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.json , yarn.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 (alpine на момент создания этого потока)
  • Все вышеперечисленные тесты в контейнере node:8-alpine с установленным git

Что касается техники «переопределения», я не уверен, что вы имеете в виду. Если вы имеете в виду префикс типа _protocol_ в значении зависимости (например, npm: в вашем примере), тогда да, одна зависимость разработчика использует пакет github :

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

Однако ошибки все еще встречаются, даже когда я удаляю зависимость dev, поэтому это не кажется связанным.

Привет @holyxiaoxin - добавление --network-concurrency 1 решило эту проблему для моего CI 👍

пинг @imsnif ? Похоже, это связано с проверкой целостности, согласно комментарию @hulkish

@khendry Отказ от использования подготовки в наших зависимостях git решил эту проблему для нашего ci, в то время как --network-concurrency 1, --child-concurrency 1 и --skip-целостность-check были недостаточны

Мы смогли исправить это с помощью npm config set always-auth true (как описано здесь ). Насколько я могу судить, npm по умолчанию предоставляет ваши учетные данные _ только_ для публикации пакетов, а не для их получения. По какой-то причине пряжа раньше не учитывала эту настройку, но теперь она соблюдается.

Недавно у меня возникла эта проблема с использованием yarn 1.12.3 и node 10.13.0 . После попытки безуспешно попробовать многие из вышеперечисленных решений удаление / восстановление файла yarn.lock сработало.

У меня такая же проблема. Удаление yarn.lock такого как @mvonballmo, было единственным, что заставило его работать. Однако он все еще не работает полностью.

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 новыми полями целостности), поскольку этот одноразовый процесс (один раз при условии, что он завершился успешно) требует больших сетевых ресурсов, чем обычная установка (он просматривает все пакеты без поля integrity и извлекает их манифест реестра).

Теории о состоянии гонки интересны и, безусловно, возможны, я буду рад изучить их подробнее. Боюсь, что воспроизведение @opiation у меня не сработало. Сейчас я запускаю свою седьмую локальную установку, и она по-прежнему работает без проблем (я не запускал скрипт, а просто запустил 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 или
  • Настройте свой локальный .npmrc ( yarn config list распечатает реестр, из которого восстанавливается yarn), затем повторно создайте 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

Я наблюдаю ту же проблему с нашим проектом. Однако, когда я удаляю deps, которые запускают скрипт prepare как часть установки (из-за URL-адресов git), он работает. Они указывают на URL-адреса git, но я думаю, что на самом деле prepare запускают больше процессов yarn install которые по какой-то причине нарушают флаг мьютекса. Интересно, не потому ли, что другие процессы запускаются корневым процессом, а не другими корневыми процессами.

Поделитесь описанными ниже шагами воспроизведения в надежде, что это позволит вам воспроизвести проблему. Дайте мне знать, если вам понадобится дополнительная информация.

Репро шаги

  1. С помощью узла v10.3.0 и пряжи v1.12.3 в новой тестовой папке загрузите package.json и yarn.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. Это работало на образе докера circleci/node:8-stretch запущенном на Circle CI 2.0.

Я начал видеть эту ошибку недавно после обновления пряжи до 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"
с curl я получил 404 для https://registry.yarnpkg.com/har-validator/-/har-validator-5.1.2.tgz
но в моем браузере я могу его скачать.
Один из моих серверов, если я понизу версию пряжи до 1.12.1, он начнет работать, но на другом сервере, даже если я понизлю версию, ошибка останется прежней (я удаляю каталог кеша пряжи в обоих случаях).
Возможно ли, что это какая-то проблема с облачными вспышками (конфигурацией)?

Нет, этот конкретный экземпляр (ваш и созданный @ ankurk91) вызван тем, что har-validator был неопубликован (cf # 6694).

Я получаю эту ошибку только в своей среде CI после добавления другого репо в качестве зависимости ( "@team/myproject": "git+ssh://[email protected]/team/myproject.git#master", ). Я могу подтвердить это

  • добавление --network-concurrency 1 в мой скрипт CI решает проблему, но, конечно, делает сборку очень медленной
  • запуск yarn install --network-concurrency 16 вызывает ошибку локально

Ни очистка кеша, ни сброс yarn.lock не помогли мне

РЕДАКТИРОВАТЬ: Кажется, исправление --network-concurrency 1 несовместимо, к сожалению 😢

такая же ошибка здесь,
легко воспроизвести:
yarn upgrade typescript@^2.8

тогда:
yarn upgrade [email protected]

Я нажал ctrl + c при установке этого последнего пакета .. и когда я снова пробую 'yarn upgrade', я получаю:


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 и, следовательно, не является проблемой Yarn. Оставляем для контекста.

Это видно для нескольких пакетов в нашей среде 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 , я считаю, что выполнил сценарий npm в package.json, который выглядел примерно так:

"audit": "npm audit"

Что совершенно глупо, потому что я никогда не использую npm в этом проекте. После этой команды все (включая npm) просто начнет иметь случайные ошибки и никогда не будет завершено, в соответствии с опытом других участников этого потока.

Если бы кто-то, воспроизводящий ошибку, мог исследовать и выяснить, что именно вызывает проблему, это было бы очень полезно! Я пробовал, но не могу воспроизвести 🙁

Некоторые указатели:

  • Нам нужно выяснить, что входит в untarStream когда он терпит неудачу - моя гипотеза состоит в том, что, возможно, мы пытаемся обработать ответ json как tarball (https://github.com/yarnpkg/yarn/blob/master /src/fetchers/tarball-fetcher.js#L146-L150)

  • единственное, что, я думаю, может иметь значение в .npmrc - это токен аутентификации. Я был бы признателен, если бы кто-нибудь мог подтвердить, что проблема исчезла, просто удалив строку токена аутентификации из .npmrc (а не всего файла)

FWIW, я сегодня столкнулся с этой проблемой. Несколько вещей:

  • Удаление .npmrc исправило это. Единственное, что было в файле, касалось токена авторизации.
  • npm install тоже не удалось, и была зарегистрирована несанкционированная ошибка 401.
  • После удаления файла .npmrc npm install снова

@deleteme, согласно моим выводам, это больше похоже на побочный продукт ошибки, чем на ее причину.

Я сталкивался с .npmrc или .yarnrc и без них

Учитывая, что эта проблема внезапно появляется намного больше, чем обычно, и что именно во время реестра npm, особенно нестабильного , вполне вероятно, что моя гипотеза не за горами

@arcanis только сегодня

В моем случае ~/.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 . Тогда он начинает работать. Я запускал сборку много раз. Это не было провалом. Не уверен, как эти 2 зависимы, но работали для меня.

Удаление только .npmrc не помогло мне. Мне также пришлось удалить мой файл yarn.lock как упомянул @davidalee . Я не знаю, почему ему это не нравится 🤷‍♂️

Не уверен, повлияло ли на меня удаление .npmrc .

Я не очень люблю удалять файл yarn.lock поэтому я просто удалил пакет har-validator из yarn.lock а затем повторно запустил 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 docker не имеет или не создает файл .npmrc .

Наконец, ошибка не ограничивается пакетом har-validator . На самом деле я никогда не сталкивался с этим с этим пакетом. Я встречал это с пакетами lodash , fbjs , react и множеством других.

Я резюмировал свои попытки, которые до сих пор достоверно воспроизводят эту проблему, в предыдущем комментарии . Для записи, при тестировании с помощью докера я могу воспроизвести проблему, включая только package.json таким образом, ни yarn.lock , ни .npmrc , ни node_modules . Я все еще могу воспроизвести эту проблему на моем локальном компьютере, на экземпляре GCE и с помощью CI Gitlab.com. Ни --network-concurrency=1 ни --skip-integrity-check похоже, не решают проблему для меня. Таким образом, я бы не стал рекомендовать закрыть эту проблему, тем более что все вышеупомянутые тесты работают с использованием npm install , предполагая, что yarn install должен быть заменой npm install учитывая те же package.json .

Проблема в том, что реестр npm обычно нестабилен и возвращает ошибки (с большей частотой, когда очевидно запускаются несколько запросов - может быть, какое-то регулирование для каждого 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 (ну!)

Для меня проблема была решена с помощью service docker restart (Ubuntu 18.04).

У меня были периодические недетерминированные ошибки, подобные этой. Я перезапускаю свою сборку, больше ничего не изменилось и работает. Есть ли у кого-нибудь альтернативы пряже?

Я начинаю получать эту же ошибку при каждой сборке (ошибки в разных модулях npm каждый раз) после создания PR для обновления нашего базового образа докера с node:8.12.0 до node:8.13.0 . Я проверил эти образы докеров узлов и обнаружил, что предустановленная версия пряжи была изменена с v1.9.4 на v1.12.3 . Смотрите: связанный git commit . Я попробовал некоторые из предлагаемых исправлений в этом потоке, но безуспешно. Мне удалось решить проблему, просто понизив версию пряжи в моем Dockerfile до v1.9.4 . Я знаю, что эта версия пряжи была проблематичной для других, но для меня более свежая версия пряжи вызывает проблему. Замечу, что я использую файл .npmrc который предоставляет учетные данные для доступа к частным модулям через артефактор jfrog, и у нас есть артефакты, настроенные для зеркалирования / прокси всех модулей npm.

Почему это закрыто? Все еще ломает CI

А пока я закрою это обсуждение, так как сообщения об ошибках изменятся, и эта ветка станет довольно большой (мы можем открывать новые, чтобы обсуждать каждый код состояния отдельно).

Я пойду дальше и заблокирую эту ветку, так как мне кажется, что она исчерпала свою полезность. Как напоминание:

  • Если у вас есть это сообщение об ошибке, то, весьма вероятно , используя старую версию. Обновите до 1.13+, чтобы получить истинное сообщение об ошибке. Скорее всего, реестр по какой-то причине возвращает HTTP 500.

  • Если вы все еще получаете ошибки, которые, похоже, исходят от самого Yarn, откройте новую ветку и подробно опишите, как воспроизвести проблему. Если вы не предоставите репродукцию, мы не сможем предоставить исправление и, скорее всего, вам придется попросить вас провести расследование.

Была ли эта страница полезной?
5 / 5 - 1 рейтинги