Yarn: فشل استخراج محتوى القطران من غير معرف

تم إنشاؤها على ٢٧ أغسطس ٢٠١٨  ·  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 والتي تنجح بشكل حاسم دون أي أخطاء في القطران أو التخزين المؤقت.

يرجى ذكر node.js والغزل وإصدار نظام التشغيل.
تم اختباره بالإصدار التالي:
العقدة: 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 الخاص بي أيضًا ، لقد قمنا بالتحديث مؤخرًا إلى الغزل 1.9.2

opiation الخطأ عشوائي بالفعل ولكن ربما وجدت السبب: هل لديك عناوين URL بعيدة git في package.json الخاصة بك بدون .git في النهاية؟ كان لدينا اثنان من هؤلاء وإضافة .git حل المشكلة. لست متأكدًا من سبب عدم إشارة رسالة الخطأ مباشرة إلى أن هذه هي المشكلة.

أيضًا ، ربما تكون ذات صلة: https://github.com/yarnpkg/yarn/issues/5536

adrienharnay ، هل يمكنك تحديد ما تعنيه ب _distant_؟ للسجل ، هذا هو package.json الذي استخدمته . هناك تبعية واحدة على جيثب وما زلت أحصل على أخطاء بدونها. لست متأكدًا من كيفية إلحاق .git بالتبعية التي لا تتبع git ، إلا إذا أساءت فهم اقتراحك.

لم تكن كلمة بعيدة هي الكلمة الصحيحة ، لقد قصدت فقط الحزم المثبتة من Git 🙂

هل يمكنك تجربة هذا؟

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

وفقًا لتعليقي السابق ، ما زلت أواجه المشكلة دون الاعتماد على storybook-addon-markdown . وبالتالي ، لا أعتقد أن هذه المشكلة تنبع من معالجة الغزل لعناوين URL بشكل غير صحيح.

في الواقع ، أنا أقرأ بسرعة كبيرة. حسنًا ، لقد أصلح هذا الخطأ لدينا ، لكن ليس لدي أي فكرة عن مشكلتك 😕 آسف

opiation هل قمت بتحديث ملف yarn.lock أيضًا؟ لأنه كان علي أن أفعل ذلك

Titozzz ، لقد واجهت هذا الخطأ مع وبدون الملف yarn.lock . لقد قمت بحذف ملف القفل وإعادة إنشائه عدة مرات دون جدوى.

أحصل على هذا أيضًا وليس لدي أي حزم من git.

كنت أرغب في الالتفاف على هذه المشكلة (https://github.com/yarnpkg/yarn/issues/6256) باستخدام إصدارات tarball للحزم ولكن في الواقع تم طرح الخطأ أعلاه لعناوين url للعبة tarball على مؤسسة Github ذاتية الاستضافة.

استضاف github.com كرات القطران بطريقة ما نجحت. على سبيل المثال
https://github.com/luwes/chameleon/archive/grasshopper-v0.0.1-beta.4.tar.gz

أرى نفس المشكلة في مشروع لدينا. ومع ذلك ، عندما أقوم بإزالة الأقسام التي تقوم بتشغيل برنامج نصي prepare كجزء من التثبيت (نظرًا لكونها عناوين URL لـ git) ، فإنها تعمل. تصادف أن هذه تشير إلى عناوين url الخاصة بـ git ، لكنني أعتقد أنها في الواقع prepare التي يبدو أنها تطلق المزيد من عمليات yarn install التي يبدو أنها تخرب علامة المزامنة لسبب ما. أتساءل عما إذا كان ذلك بسبب بدء العمليات الأخرى بواسطة عملية الجذر بدلاً من عمليات الجذر المختلفة. لا أعرف ما إذا كانت هذه المعلومات مفيدة أم أنها بعيدة عن القاعدة. لكنني اعتقدت أنني سأشارك ما وجدته بغض النظر.

khendry لقد حصلت على المشكلة مرة أخرى ، وأنت على حق ، إنها تأتي من تبعيات git التي تحتوي على برنامج نصي prepare في الحزمة الخاصة بهم. json! : +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.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 مثبتة (جبال الألب في وقت إنشاء هذا الخيط)
  • جميع الاختبارات المذكورة أعلاه في حاوية node:8-alpine مع git مثبتة

بالنسبة لتقنية "التجاوز" ، فأنا غير متأكد مما تقصده. إذا كنت تشير إلى البادئة _protocol_ في قيمة التبعية (مثل npm: في المثال الخاص بك) ، إذن نعم ، تستخدم تبعية أحد المطورين حزمة github :

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

ومع ذلك ، لا تزال الأخطاء موجودة حتى عندما أقوم بإزالة تبعية dev بحيث لا يبدو هذا مرتبطًا.

صرخ إلى أدت إضافة --network-concurrency 1 حل هذه المشكلة لـ CI الخاص بي 👍

pingimsnif ؟ يبدو أنه مرتبط بفحص النزاهة ، حسب تعليق hulkish

khendry لم يعد استخدام التحضير بعد الآن بشأن تبعيات git الخاصة بنا ، مما أدى إلى حل هذا الأمر بالنسبة إلى ci ، بينما لم تكن --network-concurrency 1 و --child-concurrency 1 and --skip-Integration-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.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.lock .

ملاحظات

ربما تكون رسالة الخطأ أكثر تحديدًا.

تحرير: اعتقد في البداية أن التراجع عن الغزل من شأنه أن يحل المشكلة - ربطت عن طريق الخطأ التزامي الخاطئ بهذه المشكلة. لم يكن الغزل هو المشكلة في النهاية.

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 كجزء من التثبيت (نظرًا لكونها عناوين URL لـ git) ، فإنها تعمل. تصادف أن هذه تشير إلى عناوين url الخاصة بـ git ، لكنني أعتقد أنها في الواقع prepare التي يبدو أنها تطلق المزيد من عمليات yarn install التي يبدو أنها تخرب علامة المزامنة لسبب ما. أتساءل عما إذا كان ذلك بسبب بدء العمليات الأخرى بواسطة عملية الجذر بدلاً من عمليات الجذر المختلفة.

مشاركة خطوات repro أدناه على أمل أن تسمح لك بإعادة إنتاج المشكلة. اسمحوا لي أن أعرف إذا كنت بحاجة إلى مزيد من المعلومات.

خطوات Repro

  1. باستخدام العقدة v10.3.0 و yarn 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. كان هذا يعمل على صورة docker 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] .
سأعيد النشر إذا حصلت على النجاح بطريقة ما.
ملاحظة.
كانت خاصة بحزمة 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 ، فسيبدأ العمل ولكن على الخادم الآخر حتى إذا قمت بالرجوع إلى إصدار أقدم ، يظل الخطأ كما هو (أزلت yarn cache dir في كلتا الحالتين)
هل من الممكن أن يكون هذا نوعًا من مشكلة cloudflare (config)؟

لا ، هذا المثيل المحدد (الخاص بك والمثيل بواسطة @ ankurk91) ناتج عن عدم نشر har-validator (راجع # 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 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 ، أعتقد أنني قمت بتنفيذ برنامج نصي npm في package.json كان شيئًا من هذا القبيل:

"audit": "npm audit"

وهو أمر سخيف تمامًا ، لأنني لم أستخدم أبدًا npm في هذا المشروع. بعد هذا الأمر ، سيبدأ كل شيء (بما في ذلك npm) في حدوث أخطاء عشوائية ولن يكتمل أبدًا ، بما يتماشى مع تجربة الآخرين في هذا الموضوع.

إذا تمكن شخص ما من إعادة إنتاج الخطأ من التحقيق ومعرفة سبب المشكلة بالضبط ، فسيكون ذلك مفيدًا للغاية! لقد حاولت ولكن لا يمكنني إعادة إنتاجه 🙁

بعض المؤشرات:

  • نحتاج إلى معرفة ما يحدث في untarStream عندما يفشل - فرضيتي هي أننا ربما نحاول معالجة استجابة json ككرة تار (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 و [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 لا تحتوي على ملف .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 ، والتي تحاول بشكل أعمى تجزئتها ومقارنتها بالتجزئة المتوقعة - والتي تفشل.

لذلك هناك خطأ في الغزل (يجب أن نطبع خطأ أكثر فائدة) ، ولكن بالنظر إلى أن المشكلة الحقيقية هي مدى هشاشة سجل npm ، فهي ليست من أولوياتي في الوقت الحالي (سأقوم بالتأكيد بمراجعة العلاقات العامة ، رغم ذلك!) .

بالنسبة إلى سبب عدم حدوث ذلك مع npm: يعيدون محاولة طلباتهم حتى تعمل. لدى الغزل آلية للقيام بذلك ، ولكن ليس على الجزء الذي يحسب التجزئة على وجه التحديد.

أقترح استخدام مرآة غير متصلة بالإنترنت للتوقف عن الاعتماد على سجل 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).

لقد كنت أعاني من أخطاء متقطعة وغير حتمية مثل هذا الخطأ. أعيد تشغيل بنائي ، ولم يتغير شيء آخر وهو يعمل. هل لدى أي شخص أي بدائل للغزل؟

لقد بدأت في الحصول على هذا الخطأ نفسه في كل إصدار (أخطاء في وحدة npm مختلفة في كل مرة) بعد إجراء PR لتحديث صورة عامل الإرساء الأساسي لدينا من node:8.12.0 إلى node:8.13.0 . لقد قمت بفحص صور docker هذه واكتشفت أنه تم تغيير إصدار الغزل المثبت مسبقًا من v1.9.4 إلى v1.12.3 . انظر: git الالتزام المرتبط . لقد جربت بعض الإصلاحات المقترحة في هذا الموضوع دون أن يحالفني الحظ في حل الخطأ. لقد تمكنت من حل المشكلة ببساطة عن طريق تخفيض إصدار الغزل في Dockerfile إلى v1.9.4 . أعلم أن هذا الإصدار من الغزل يمثل مشكلة بالنسبة للآخرين ، ولكن بالنسبة لي أحدث إصدار من الغزل هو الذي أثار المشكلة. سألاحظ أنني أستخدم ملف .npmrc الذي يوفر بيانات اعتماد للوصول إلى الوحدات الخاصة عبر مصنع jfrog ولدينا مصنع تم إعداده لنسخ جميع وحدات npm / الوكيل.

لماذا هذا مغلق؟ لا يزال كسر CI

في غضون ذلك ، سأغلق هذه المناقشة ، حيث ستتغير رسائل الخطأ وسيصبح هذا الموضوع كبيرًا جدًا (يمكننا فتح رسائل جديدة لمناقشة كل رمز حالة على حدة).

سأمضي قدمًا وأغلق هذا الخيط لأنه يبدو لي أنه تجاوز فائدته. للتذكير:

  • إذا كانت لديك رسالة الخطأ هذه ، فمن المحتمل جدًا أنك تستخدم إصدارًا قديمًا. قم بالترقية إلى 1.13+ للحصول على رسالة الخطأ الحقيقية . من المحتمل أن يقوم السجل بإرجاع HTTP 500 لسبب ما.

  • إذا كنت لا تزال تحصل على أخطاء يبدو أنها تأتي من Yarn نفسها ، فافتح موضوعًا جديدًا وقم بالتفصيل بكيفية إعادة إنتاج المشكلة. إذا لم تقدم نسخة ، فلن نتمكن من توفير إصلاح ، ومن المحتمل أن نطلب منك التحقيق بنفسك.

هل كانت هذه الصفحة مفيدة؟
5 / 5 - 1 التقييمات