<p>فشل تثبيت الغزل مع "ENOENT: لا يوجد مثل هذا الملف أو الدليل" أحيانًا</p>

تم إنشاؤها على ٤ فبراير ٢٠١٧  ·  173تعليقات  ·  مصدر: yarnpkg/yarn

تشغيل yarn install كجزء من خطوة إنشاء صورة Docker بناءً على node:7 فشل في Travis CI مع أخطاء ENOTEMPTY ، EEXISTS . يبدو دائمًا أنه خطأ في الحزمة webdriverio .

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 -g و بـ apt وكلتا الطريقتين تسببان فشل Travis.

من الغريب أن الصورة تُبنى بنجاح على جهازي المحلي الذي يقوم بتشغيل Ubuntu 16.04.1 LTS مع إصدار Docker 1.13.0 ، بناء 49bf474.

cat-bug

التعليق الأكثر فائدة

@ bestander مع --network-concurrency 1 لا يظهر الخطأ (بينما بدونه يظهر في كل مرة).
ولكن ما هي القيمة الافتراضية لهذه المعلمة؟ أيًا كانت القيمة التي أختارها لها (1 ، 2 ، 4 ، 8) ، فإنها تعمل ، بينما إذا لم أضعها على الإطلاق ، فإنها تفشل ...

ال 173 كومينتر

مثير للاهتمام ، لذا فهو فشل فقط في ترافيس ، ولكنه يعمل عند الاختبار محليًا؟ هذا غريب جدًا نظرًا لأنه من المفترض أن يضمن Docker اتساق البيئة.

@ Daniel15 اعرف الحق ...

لقد رجعت العقدة إلى الإصدار 6 وما زالت تفشل في ترافيس. لقد أضفت علامة --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 حول

@ Daniel15 لا يعمل محليًا أيضًا. في الواقع ، لا يعمل أبدًا عندما تكون ذاكرة التخزين المؤقت فارغة بالنسبة لي!

victornoel يمكن أن يكون الخطأ الأخير https://github.com/yarnpkg/yarn/issues/2714

@ bestander لقد جربت 0.19.1 في ذلك الوقت ولم تنجح ...

لقد أعدت المحاولة ، والآن الخطأ:

  • لا تظهر بذاكرة تخزين مؤقت فارغة ، ولكنها تظهر في الحالة التالية (آمل حقًا أن تكون قابلة للتكرار ...):

    • rm -rf ذاكرة التخزين المؤقت للغزل

    • استنساخ https://gitlab.com/linagora/petals-cockpit.git

    • الخروج 5f31ccb4b2357201baa50539b30702cffceb6992

    • قم بتشغيل الغزل في الدليل frontend

    • سيد الخروج

    • قم بتشغيل الغزل مرة أخرى في الدليل frontend

    • أحصل على: 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.21.2 بينما لم يكن الأمر كذلك من قبل ، ربما يوجد ملف آخر في مكان آخر يكون مصدر هذه المشكلة ، وهذا ليس في مخبأ؟)

@ bestander سأستمر في اختبار الغزل بمجرد توفر # 2744

بينغ لي إذا كنت أستطيع المساعدة.
أفضل إجراء هو إرسال PR مع كسر (وتخطي) اختبار e2e.

@ bestander well ، كلا ، ما زلت أحصل على أخطاء مثل:


➜  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 على أي حال يمكنني الحصول على تتبع كامل للخطأ؟

أرى هذا فقط في 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 لأن لديهم عادةً اتصالات إنترنت سريعة جدًا ...

هذا قليل من الاستنتاج لاستنتاج ذلك ، ولكن يمكن أن يساعد في العثور على أصل المشكلة.
WDYT @ bestander؟

للتسجيل ، أعتقد أن الخطأ ينبع من tar.Extract خطوة في خط أنابيب الجلب ، لكنني لست متأكدًا تمامًا ^^

شكرًا لبحثك عن المزيد ، تبحث عن شيء ما هنا.

يمكنني إعادة السيناريو من 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 تسبب هذا الخطأ لسبب ما ، فهل يمكن أن يكون التزامن؟

بعض المساعدة في التحقيق في سبب عدم اختبار تلك التبعيات القليلة (في حالتي المطبوعة والزاوية الأساسية) يسبب الخطأ أمر مرحب به.
التزامن؟ خطأ في https://github.com/npm/node-tar؟

victornoel ، هل يمكنك إعادة إنتاج الخطأ باستخدام yarn install --network-concurrency 1 ؟

@ bestander مع --network-concurrency 1 لا يظهر الخطأ (بينما بدونه يظهر في كل مرة).
ولكن ما هي القيمة الافتراضية لهذه المعلمة؟ أيًا كانت القيمة التي أختارها لها (1 ، 2 ، 4 ، 8) ، فإنها تعمل ، بينما إذا لم أضعها على الإطلاق ، فإنها تفشل ...

الافتراضي هو 15 ، يمكنني معالجة المشكلة مع التزامن 15 بسداد نظيف https://gitlab.com/linagora/petals-cockpit.git#075bac4c54fee466568c000c7ffe8025f593e212 .

أخبارممتازه! خطوة أخرى إلى الأمام نحو الحل والحل :)

بعض النتائج.

TL ؛ DR لقد نفدت لدي أفكار حول كيفية إصلاحه بشكل صحيح للأبد ، وهذا يحتاج إلى معرفة أعمق في Node.js.

  1. يمكن القضاء على الشبكة من المشاكل المحتملة.
    لقد قمت بإعداد مرآة غير متصلة بالإنترنت لملفات .tgz في yarn.lock ويمكنني إعادة إنتاج المشكلة مع الحزم المثبتة من القرص.

تكمن المشكلة في دفق unzip / untar في كود tarball-fetcher.

  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 و typecript-2.2.1 يفشلان لأن لديهم عددًا قليلاً من الملفات وهياكل المجلدات العميقة ، ويفشلون في التثبيت أثناء إجراء العديد من عمليات mkdir / copy المتزامنة.

في كل مرة يفشل فيها syscall مختلف: 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 تنزيل الحزم من الإنترنت ، على MBPro 13 "، تنظيف ذاكرة التخزين المؤقت واستخدام tar-fs لفك ضغط الملفات.
التزامن 12 - فشل مرة واحدة
التزامن 8 - 21 ثانية
التزامن 4 - 23 ثانية
التزامن 2 - 34 ثانية

يبدو أن ضبط التزامن على 8 آمن بما فيه الكفاية ، كما أنه من المنطقي تبديل مكتبة tar.
سأتابع مع العلاقات العامة.

الطريقة الصحيحة لإصلاح هذا ستكون تفرع https://github.com/mafintosh/tar-fs والقيام بعمليات fs أكثر ذكاءً ، على سبيل المثال استخدام mkdir لكل مجلد مرة واحدة فقط

يبدو أن المشرف tar-fs نشط ، فربما يمكننا فتح مشكلة هناك ومعرفة ما يعرفونه / يقترحونه حول هذا الأمر؟

@ victornoel ، هل ستفعل ذلك من فضلك؟

تضمين التغريدة mafintosh / tar-fs # 61 :)

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

هل تعرف ما هي الشروط المطلوبة لتشغيل هذا الخطأ؟ أرغب في استبدال مكالمات نظام البناء الخاص بي بـ npm بـ yarn للسرعة ، ولكن إذا اضطررت إلى تعطيل التزامن ، فأنا قلق من أنه قد يلغي أي مكافأة هناك.

ProdigySim ، كما هو موضح في # 2829 (الذي تم دمجه في الغزل الرئيسي) ، فإن تقليل التزامن الشبكة ليس له تأثير كبير على أداء الغزل. يمكنك ببساطة ضبطه على 8 ويجب أن يكون على ما يرام. على أي حال ، حتى عند تنزيل 8 تبعيات في كل مرة ، لست متأكدًا من أن معظم محركات الأقراص ستتبع سرعة النقل ، لذا لن تفقد الكثير بالتأكيد :)

victornoel شكرا على المعلومات. لست متأكدًا من أن مجرد تقليل --network-concurrency سيكون كافيًا في حالتي ، لأننا سنقوم أيضًا بتشغيل مثيلات متعددة من الغزل بالتوازي.

يمكنني إعادة معالجة هذه المشكلة حتى مع --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

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

تضمين التغريدة
هذه مشكلة منفصلة ولكنها ذات صلة بسبب ذاكرة التخزين المؤقت للتنزيل العالمي لـ Yarn. الحل هو إنشاء ذاكرة تخزين مؤقت مختلفة لكل دليل.

لا يزال بإمكانك الجري بـ --network-concurrency 8 . (في الواقع ليس لدي أي مشاكل مع التزامن غير المحدود للشبكة.)

مزيد من السياق هنا .

@ bestander بشكل مدهش ، اليوم ، عادت المشكلة إلى الظهور (تم تشغيلها بواسطة القطران لإصدار جديد من الزاوية ^^) حتى مع التزامن الشبكي عند 8 ، ولكن فقط على CI الخاص بي ... لا تهتم حقًا إذا استغرق الأمر بضع ثوانٍ أخرى لتنزيل التبعيات ، لذلك لا بأس في الوقت الحالي).
يبدو أننا لا نحصل على تعليقات من مشروع tar-fs ... بمن يمكننا الاتصال به أيضًا للحصول على المساعدة في ذلك؟

وجود هذه المشكلة أيضًا على إصدارات Travis الخاصة بي لنظام التشغيل OS X. لقد تعلمت ذاكرة التخزين المؤقت وقمت بتعيين التزامن على الشبكة ولكن لم يساعد شيء.

kevingelion @ إلى أي قيمة قمت بتعيين التزامن على الشبكة؟ كن صارمًا وقم بتعيين شيء مثل 2 لمعرفة ما إذا كانت المشكلة هي هذه :)

victornoel لقد قمت بضبطه على 1 و 2 ، وكلا الخيارين أدى إلى فشل. لقد استخدمت yarn --mutex network ولا يوجد نرد أيضًا.

bestander إصلاحات الاختراق التالية (عدل: ليس) المشكلة:

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

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

شكرا فيكتور!

في 24 مارس 2017 الساعة 18:07 ، كتب Victor Noël [email protected] :

bestander https://github.com/bestander الاختراق التالي يعمل على إصلاح
مشكلة:

diff --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، resolution، رفض}) ؛
  • this.shiftQueue () ؛
  • this.execute ({params، resolution، رفض}) ؛
    }) ؛
 // 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 لكنه يحسن الأمور قليلاً

آسف للإيجابية الخاطئة ، كنت حريصًا جدًا على الإبلاغ عن نتائجي :)

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

حسنًا ، هذا يعتمد ، في بعض الأحيان يعمل ، وأحيانًا لا يعمل (مع الاختراق ، لذلك ليس خطأً تامًا أو أن اتصال الإنترنت لدي بطيء جدًا الآن ...)

أنا أواجه هذا أيضًا في بنى CI الخاصة بنا. بعد الكثير من الاختبارات ، تمكنت أيضًا أخيرًا من التكاثر محليًا.

مرة أخرى ، إنه يعمل في بعض الأحيان ، لكنه يفشل غالبًا مع أي من الأخطاء التالية (مما يجعل الأمر يبدو وكأن هناك نوعًا من حالة السباق في مكان ما):

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

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

لست متأكدًا مما إذا كان هذا مفيدًا على الإطلاق ... يسعدني محاولة المساعدة بأي طريقة ممكنة!

تحرير: لست متأكدًا مما إذا كان هذا مفيدًا أم لا ، ولكن حزمة المستوى الأعلى مدرجة بتنسيق "git+ssh://[email protected]/org/package.git#v1.0.0" ، وفي الخطأ ، يبدو أن التبعية الفرعية التي يتم تنزيلها يتم تنزيلها أكثر من https بعنوان url "https://codeload.github.com/org/package/tar.gz/ljasdf08i234098aifj" .

أنا أحقق في هذا أكثر قليلاً.
أحاول إنشاء نص برمجي مستقل لمقتطفات tar-fs المتزامنة ولكني أميل إلى الاعتقاد بأن المشكلة تكمن في كسر ملف tar أثناء التنزيل.

وجدته ، دوه.

في المثال من https://github.com/yarnpkg/yarn/issues/2629#issuecomment -282745896 يحتوي Yarn على حزم مكررة يتم تنزيلها واستخراجها بالتوازي.
العناصر المكررة هي @angular/core/-/core-4.0.0-rc.1 و typescript/-/typescript-2.2.1.tgz .

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

لا يوجد سحر على نظام التشغيل أو مستوى استخراج القطران.

هاها ، عمل جيد @ bestander ، سعيد لأننا وجدنا المشكلة أخيرًا!

عمل رائع @ bestander : https://github.com/yarnpkg/yarn/pull/3090 و https://github.com/yarnpkg/yarn/pull/3106 هو ما منعنا من استخدام الغزل.

شكر!

واجهت هذه المشكلة في تثبيت وحدة أنواع الدعامة. في كل مرة حاولت تثبيته سيكون متاحًا على اسم ملف مختلف. بالنسبة لي ، اختفت المشكلة بعد تثبيت 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 من المحتمل أن يكون ذلك من قبيل الصدفة - لا يستخدم Yarn عميل npm على الإطلاق ، لذا فإن إصدار npm لا يؤثر على تنفيذ الغزل على الإطلاق.

هذا يتسبب في فشل تصميمات 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'".

تضمين التغريدة
نفس الشيء هنا ، لكن هذا يعمل:

yarn install --network-concurrency 1

ما هو الإصدار الذي تستخدمه؟ من المفترض أن يتم إصلاح هذا بالفعل ...

Le 8 août 2017 6:37 مساءً ، "Ben Merckx" [email protected] écrit:

Redmega https://github.com/redmega
نفس الشيء هنا ، لكن هذا يعمل:

تثبيت الغزل - التزامن الشبكي 1

-
أنت تتلقى هذا لأنه تم ذكرك.
قم بالرد على هذا البريد الإلكتروني مباشرة ، وقم بعرضه على GitHub
https://github.com/yarnpkg/yarn/issues/2629#issuecomment-321011749 ، أو كتم الصوت
الخيط
https://github.com/notifications/unsubscribe-auth/AAJ0z5qFb7gSW4w14_RbFNjsn4sRYV78ks5sWI7hgaJpZM4L3JbX
.

victornoel أنا أستخدم v0.27.5 على آلة جينكينز ، مثل بلدي المحلي.

يرجى تجربة النوادي الليلية: https://yarnpkg.com/en/docs/nightly

إزالة ملف yarn.lock و yarn install أصلح المشكلة بالنسبة لي.

يؤدي هذا أيضًا إلى فشل تصميمات Jenkins الخاصة بي من حين لآخر. عادة ما يعمل بعد المحاولة الثانية ولكنه سيفشل مرة أخرى لاحقًا.

ajcritesRedmegaheadionebenmerckx يجب عليك فتح موضوع آخر إذا كنت تعاني من هذا النوع من المشاكل. تم إصلاح هذه المشكلة بالتأكيد ، لذا يجب أن تكون مشكلتك مختلفة ، حتى لو ظهرت عليها بعض الأعراض المشابهة.
أنا متأكد من أن هناك فرصة أكبر لحل مشكلتك إذا فتحت مشكلة أخرى :)

لدينا نفس المشكلة ، وهي إنشاء حزم متوازية في Jenkins مع Node 8.5. نحتاج حاليًا إلى التمسك بـ 0.27.5 ، حتى يتم إصدار 1.0.2 لإصلاح خطأ آخر. لكن شكرا لدعمك وعملك على أي حال :)

floric أواجه نفس المشكلة بنفس السياق (Jenkins + Parallel) مع العقدة 8.9.4 ، هل تم حل مشكلتك؟

تحرير: سأحاول استخدام 8.11.1 لمعرفة ما إذا كان يتضمن أحدث إصدار من الغزل بدون الخطأ.

Niceplace ، يمكنك تجربة الخيار --mutex : https://yarnpkg.com/en/docs/cli#toc -concurrency-and-mutex

لدينا خطط لإضافة تأمين أفضل لكل حزمة لتجنب ذلك قريبًا.

أواجه أخطاء متقطعة مع كل من ENOENT: no such file or directory, chmod و ENOENT: no such file or directory, lstat محاولة تشغيل yarn --mutex=network على جذر monorepo مع تمكين مساحة عمل Yarn ...

لا يبدو أنه متسق ، فأنا أحصل على أحدهما أو الآخر بشكل عشوائي. (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 ولدي خطأ مشابه. تمكنت الغزل أخيرًا من تثبيت الحزمة بعد عدة عمليات تشغيل.

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

أرى هذا الخطأ كثيرًا مع Yarn 1.9.2 على نظام Windows الفرعي لنظام Linux.

اليوم لدينا مشاكل مماثلة مع الحزم المعطلة على 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-extra و yarn add fs-extra في حزمتين ، مما يؤدي إلى ترقية هذه التبعية بشكل فعال.

مرحبًا ، أعتقد أنني وجدت شيئًا.

كنت أتعامل مع جزء من الكود الذي يسرد الملفات في دليل محدد بشكل متكرر باستخدام fs و rxjs واكتشفت أنه من المحتمل أن يفشل إذا لم أنتظر lstat إنهاء lstat .

لقد صنعت حزمة NPM بسيطة ، اختبار غير متزامن dirtree ، لاختبار ما إذا كانت بيئتك تتأثر بهذا أم لا. أنا أستخدم WSL ووجدت أنه من المحتمل أن يفشل أثناء التعامل مع دليل يحتوي على العديد من الأدلة الفرعية ، مثل node_modules ، حتى مع وجود عدد منخفض من التزامن.

حسنًا ، ما زلت لا أعرف ما إذا كانت هذه المشكلة خاصة بـ WSL أم لا. في الوقت الحالي لا يمكنني اختباره في بيئة أخرى ، مثل Linux و Mac وما إلى ذلك.

nieltg أردت مشاركة ملاحظة قد تساعد في تشكيل البعض الآخر. أنا أستخدم Docker CE في WSL و Docker for Windows كمضيف لي ، لذلك عندما أعمل مع Docker في WSL ، يبدو الأمر أصليًا ، ولكن في الواقع يعمل المضيف في عالم Windows أصليًا (لذا فإن Dockerfiles الخاص بي يعمل بالفعل على حل / c / foobar to ج: / foobar في محرك Docker). هذا مهم بشكل لا يصدق عندما أستخدم الارتباطات (داخل الحاوية الخاصة بي ، أقوم بتركيب مجلداتي المحلية بحيث يكون / usr / src داخل الحاوية في النهاية في c: / src / foobar (على الرغم من أن Dockerfile الخاص بي سيُظهر الارتباط كـ / c / src / foobar: / usr / src (انظر الترجمة الآلية في المسار؟)

هذا التمييز مهم لأنه إذا I yarn install داخل احدة من تلك المجلدات المحلية، داخل حاوية بلدي، وأنا الحصول على نفس الأخطاء أفعل مباشرة في وسل (أي عامل الميناء المعنية).

من ناحية أخرى ... إذا كنت فقط mkdir /tmp/src && cp ./package.json /tmp/src/ && cd /tmp/src && yarn install ، فإن كل شيء ينجح تمامًا ويمكنني فقط mv /tmp/src/node_modules /c/src/foobar/ وأنا جيد ، لذلك هذا هو الحل الحالي. ضع في اعتبارك أن /tmp موجود كمخزن عامل ميناء (كل IO يبدو كملف واحد لنظام التشغيل لأنه قسم فعال في ملف).

أعلم أن استخدام عامل الإرساء ليس أمرًا مثاليًا هنا ، ولكن يبدو أنه يشير إلى أن معالجة الملفات السريعة قد تكون مشكلة نظرًا لأن IO نفسه ليس كذلك وقد يساعد الآخرين في حل هذه المشكلة.

... تم تشتيت انتباهه وتقديمه في وقت مبكر جدًا. على أي حال ، عقلي في مكان آخر في الوقت الحالي ، لكنني سأعود لاحقًا لأرى ما إذا كان بإمكاني ابتكار اختبار باستخدام نهجك و Docker لاستخلاص المزيد من الاستنتاجات.

إعادة الفتح

لقد بدأنا مؤخرًا في رؤية نفس النوع من الخطأ باستخدام الغزل 1.10.1 ، وتشغيل CI build في Azure Devops (المعروف سابقًا باسم Visual Studio Team Services).

يبدو أن التبعية الفعلية الفاشلة عشوائية بشكل أفضل ما يمكنني قوله ، ولكن 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 نفس الشيء هنا ، باستخدام الغزل 1.10.1 في Azure Devops والحصول على الخطأ:

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'".

لسوء الحظ ، أعتقد أنه يتعين علي التخلي عن الغزل لثنائيات العقدة العالمية والعودة إلى npm حتى يتم إصلاح ذلك.

للأسف ، بدأت هذه المشكلة تصيب بنايات CI مؤخرًا أيضًا ؛ (

نجح اقتراح WSL

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

أنا أرسل سلسلة (محتوى ملف XML) إلى fs.writeFile () ، والتي تستدعي في النهاية ما يلي ، لكنني لست متأكدًا مما إذا كنت مستعدًا لمواجهة التحدي المطلوب لإعداد بنية مخصصة مع تصحيح أخطاء إضافي الناتج من مشروع C ++ هذا ، حتى أتمكن من تأكيد المكان الذي يشعر به اليمين بالضبط وفقًا للعقدة أو وحدة C ++ هذه.

خلاصة القول هي أن عمليات الكتابة لا تفشل ، لكن العقدة تعتقد أنها كذلك ، فالسيناريو الذي يبدو منطقيًا بالنسبة لي هو أن وحدة c + plus تنجح ، لكنها تتحقق داخليًا من الملف وتفشل ، ثم لا تشعر التقارير بأنك تعود إلى العقدة ثم تحدث الكتابة الفعلية بحيث عندما أذهب للتحقق من الملف ، يكون هناك والخطأ لا معنى له.

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

@ bestander هل من طريقة لإعادة فتح هذه المشكلة؟ من الواضح أن هذا ليس ثابتًا ويؤثر على الكثير من الناس.

لا يزال تأكيد ذلك يحدث مع خيوط الغزل 1.12 وخطوط أنابيب Azure.

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

يحدث أيضًا مع الغزل 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 / تثبيت الغزل. كان يحدث عندما تم نسخ الكثير من الملفات دفعة واحدة إلى القرص الصلب. يرجى التأكد من أنك تستخدم أحدث إصدار من 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 للحصول على أمثلة شائعة) ، أو خارج أحد هذه الحوامل؟ اختبار العقل بديل (~ /. على سبيل المثال) والإبلاغ عن أي اختلاف؟

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

[2/4] إحضار الحزم ...
خطأ https://registry.yarnpkg.com/smartwrap/-/smartwrap-1.0.10.tgz : فشل استخراج محتوى القطران من الملف غير المحدد ، يبدو أن الملف مشترك
rrupt: "ENOENT: لا يوجد مثل هذا الملف أو الدليل ، افتح 'C: \ Users \ Administrator \ AppData \ Local \ Yarn \ Cache \ v4 \ npm-smartwrap-1.0.10-873ef350d
4ee1262fed4a80a55634d86ae1faf48 \ node_modules \ smartwrap \ ejq '"
info قم بزيارة 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 لكنها ظلت تفشل في جلب الحزمة الأخيرة ، والتي أنا متأكد من أنها ليست ذات صلة.

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

حاولت إعادة تعيين ذاكرة التخزين المؤقت للغزل وإعادة التثبيت والتشغيل باستخدام Network-concurrency 1 ، ولم ينجح أي منهما.

ما حل المشكلة بالنسبة لي ، هو التبديل إلى شبكة مختلفة (فقط استخدمت AP الخاص بهاتفي بدلاً من WiFi) وعمل كل شيء مثل السحر.

لدي حدس أن هذه المشكلة قد تكون مرتبطة بالاسترداد الخاطئ لبعض أخطاء الشبكة المحددة للغاية. سوف ننظر فيه لاحقا.

يمكنني تأكيد التعليق السابق. إعداد network-concurrency لا يساعد. أدى التبديل إلى نقطة اتصال الهاتف إلى إصلاح المشكلة بالنسبة لي. بيئتي: Windows 10 (نظام Linux الفرعي - Ubuntu)

أنا على WSL وكنت أرى هذه المشكلة مع الحزمة geo-tz التي تحتوي على بنية مجلد متداخلة (غريبة قليلاً). جربت بعض الأشياء --network-timeout و --network-concurrency لكن لم أحصل على شيء. ومع ذلك ، عندما قمت بتمكين المسارات الطويلة على Windows (راجع منشور SuperUser هذا) تعمل الآن بشكل جيد. ربما قد يساعد هذا بعض الأشخاص الآخرين على WSL. تحرير يبدو أنني تحدثت في وقت مبكر جدا. كان يعمل ، وربط التبعيات أسرع ، لكنني الآن أرى نفس الخطأ مرة أخرى.

لا يزال كسر CI ....

لدينا نفس المشكلة مع Yarn 1.13.0 الذي يعمل على جهاز Debian Linux الذي يعمل كعقدة Jenkins التابعة. لاحظ أن لدينا خادم مستودع خيوط محلي ، لذلك أثناء الإنشاء ، لا توجد (أو قليلة جدًا) تنزيلات فعلية من خوادم إعادة الشراء العامة على الإنترنت.

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 الخاص بنا.
هذا يتماشى مع المشكلة.

خطأ 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 يقوم بتشغيل تصميمات متوازية لتطبيقاتنا ، مما يعني أن نصين (أو أكثر) من البرامج النصية شغّلوا "تثبيت الغزل" في نفس الوقت ، حيث أدت إحدى عمليات الإنشاء إلى إزالة ذاكرة التخزين المؤقت للغزل تمامًا _ (باستخدام "yarn cache clean") قبل بدء "yarn install". كانت هذه مشكلة قاتلة لعمليات الغزل الأخرى بالطبع.
ثم أزلنا تنظيف ذاكرة التخزين المؤقت وغيرنا أمر الغزل إلى
yarn install --verbose --prefer-offline --mutex file:/tmp/.yarn-mutex --network-concurrency 1
(_-- الإسهاب_ ليس ضروريًا حقًا) ويتم إدخاله
child-concurrency 1
في yarnrc.
الآن ، مع بدء عمليات الإنشاء المتوازية ، اكتشف الغزل أن عملية غزل أخرى نشطة وانتظرت حتى تنتهي. أدى هذا إلى حل مشاكل "لا يوجد ملف من هذا القبيل" على CI الخاص بنا.

أحصل على هذه المشكلة على جهازي المحلي عندما أستخدم مرجع حزمة بهذا التنسيق:

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

خصائص بارزة: حزمة خاصة ، عنوان url github ، 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 (داخل حاوية عامل الميناء) ونحصل على نفس الأخطاء. لقد حاولنا yarn cache clean

لست متأكدًا مما يجب تجربته في هذه المرحلة ووقف عمليات البناء لدينا. 😬

دان ، هل حاولت الركض باستخدام - Network-concurrency 1؟ لدي مماثلة
السيناريو وهذا حل مشكلتي.
في 2 أبريل 2019 ، 22:17 ، كتب "Dan Van Brunt" [email protected] :

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

لست متأكدًا مما يجب تجربته في هذه المرحلة ووقف عمليات البناء لدينا. 😬

-
أنت تتلقى هذا لأنك مشترك في هذا الموضوع.
قم بالرد على هذا البريد الإلكتروني مباشرة ، وقم بعرضه على GitHub
https://github.com/yarnpkg/yarn/issues/2629#issuecomment-479283590 ، أو كتم الصوت
الخيط
https://github.com/notifications/unsubscribe-auth/AFU4O1iKA-HBd62Hema1ETmuUlMro_GLks5vdAEOgaJpZM4L3JbX
.

tevaum التي حلت مشكلة CI أيضًا. كما أدى إلى إبطاء عمليات البناء لدينا بشكل كبير. فظيع جدا ، ولكن الحل الوحيد.

بلى. إنه جانب سلبي سيء. يمكنك المحاولة بأرقام صغيرة مثل 2 أو 4 ...
سيكون أسرع قليلاً ، لكن بالنسبة لي ، كانت القيمة الوحيدة التي نجحت هي 1: /

لذلك علينا انتظار الإصلاح الحقيقي حتى نكون سعداء ؛)
في 4 أبريل 2019 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
.

هل سيتم إصلاح هذا؟ هذا جعل الغزل غير قابل للاستخدام في أكثر من مشروع من مشاريعي

يرجى استخدام خيار mutex ، الموثق هنا: https://yarnpkg.com/en/docs/cli/#toc -concurrency-and-mutex

استخدام ذاكرة التخزين المؤقت لـ Yarn ليس آمنًا للاستخدام بطريقة متعددة العمليات وهذا هو سبب مثل هذه الأخطاء.

بدلاً من ذلك ، يمكنك تعيين مجلد ذاكرة تخزين مؤقت لكل عملية باستخدام الخيار --cache-folder الموثق هنا: https://yarnpkg.com/en/docs/cli/cache#change -the-cache-path-for-yarn-

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

يتمثل الجانب السلبي لمجلد ذاكرة التخزين المؤقت لكل عملية في زيادة الإدخال / الإخراج وفقد بعض الإمكانات بسبب تقليل إعادة استخدام ذاكرة التخزين المؤقت.

سيكون الحل المثالي هو تنفيذ عملية تنفيذ ذاكرة التخزين المؤقت الآمنة للعملية وهو ليس سهلاً للغاية مع عدم وجود أي إمكانيات لإغلاق الملفات في Node (يبدو أن الخيار الوحيد الموثوق به هو إنشاء أدلة mutex). الخيار الثاني هو استخدام مجلد ذاكرة تخزين مؤقت لكل ذراع متوازي والذي يسمح بإعادة استخدام التزامن وذاكرة التخزين المؤقت في نفس الذراع.

لا أعتقد أنها عناصر كائن المزامنة. أقوم أنا وبعض الآخرين بتشغيل خيوط مفردة في كل مرة - في حالتي ، إنها فقط RUN yarn install في Dockerfile - أثناء مرحلة بناء صورة عامل الإرساء. هذا يجعله متأكدًا تمامًا من عدم وجود عمليات أخرى تعمل في نفس الوقت في تلك البيئة.

تحقق من هذا ، مثال على الحد الأدنى من الاستنساخ (على الأقل بالنسبة إلى 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

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 - بالنظر عن كثب إلى السجل ، فإنه يظهر بالفعل العديد من حالات الغزل التي تعمل بالتوازي. يجب ألا ترى نفس رسالة "تحليل الحزم" مرتين. لا أعرف سبب حدوث ذلك ، لكنني متأكد بنسبة 100٪ أن هذا هو السبب.

BYK أرى أن إحدى هذه الحزم بها "scripts": { "build": "yarn babel --out-dir dist && del-cli 'dist/**/__tests__' && yarn tsc --emitDeclarationOnly", "prepare": "yarn build" } الأخرى بها نصوص مختلفة ، لكن لا تزال قيد التشغيل .. هل تلك التي تم إطلاقها بواسطة الغزل أثناء التثبيت؟

Nopik - لا تعتقد أن هذا من شأنه أن يسبب المشكلة لأنهم ببساطة يقومون بتشغيل البرامج النصية ، وليس yarn install .

أوافق على أنه من المحتمل أن تكون هناك حالات متعددة من الغزل يعمل بشكل متزامن. المشكلة هي أن هذا يحدث عند استدعاء cli واحد yarn . هذا لا يحتاج إلى عامل ميناء لإعادة الإنتاج.

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

في حالتنا ، ليس لدينا العديد من حالات الغزل.

يعمل نظامنا في صورة عامل ميناء خاص به. لديها تثبيت غزل واحد. لقد بدأ في سوء التصرف فجأة والآن لا يمكننا العمل بدون ضبط التزامن الشبكي على 1.
ما لم تتغير الخيوط نفسها بين ليلة وضحاها ، لا أرى مشكلة أخرى غير تلك الخيوط التي تثير مشكلة مع ظروف معينة.

إذا حاولت حل هذه المشكلة بـ --mutex file أو حتى --mutex network ، فستواجه (على الأرجح) هذا الخطأ فقط https://github.com/yarnpkg/yarn/issues/6650 (مفتوح / لم يتم حله لمدة 6 أشهر الآن) 😢

مما يعني أنه بمجرد تشغيل yarn install ، على الرغم من نجاحه ، فلن تتمكن أبدًا من تنفيذ أمر غزل آخر

دان ، هل حاولت الركض باستخدام - 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 install --network-concurrency 1 --mutex network يعمل في كل مرة ينجح فيها استخدام أحد الخيارات أو الخيارات الأخرى في جزء من الوقت فقط.

إذن ما هو الحل لهذه القضية؟
أستخدم الغزل 1.16 على Ubuntu Linux 18.04
وما زلت أتلقى رسالة الخطأ هذه:

خطأ حدث خطأ غير متوقع: "ENOENT: لا يوجد مثل هذا الملف أو الدليل ، lstat '/ home / user / workspace / project / packs / components / node_modules / source-map-support'".

أمري هو:

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

ويظهر هذا الخطأ مرة كل مرتين: ((
ملاحظة: أعمل في monorepo لذلك قمت بتمكين مساحات عمل الغزل
PPS:
لقد تحققت مرتين
لا تساعد إضافة ملف - mutex أو شبكة mutex.

الحل الوحيد الذي يمكنني تأكيده هو وضع برنامج نصي

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

:(

Fwiw ، لقد كنت قادرًا على التبديل إلى npm من خلال القيام بأي شيء أكثر من البحث / استبدال yarn بـ npm ، باستخدام synp لتحويل yarn.lock إلى package-lock.json ، وتشغيل npm install . اعتقدت أن هذه ستكون عملية مؤلمة ، لكن npm تقدمت كثيرًا واستغرق الأمر حوالي 30 دقيقة فقط والآن تعمل فقط في كل مكان

يبدو أن المشكلة هنا هي أنه لا يوجد مثال بسيط حقًا لما يحدث. لقد قمت بنشر package.json تافهًا يعيد إنتاج المشكلة بشكل موثوق به ولكن الحزم المضمنة معقدة إلى حد ما.

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

لقد كنت أقصد إنشاء بعض الإثباتات البسيطة لحزم المفاهيم مع خطوات "تحضير" مضخمة لاختبار هذه النظرية ولكن لم يكن لدي الوقت. ربما يمكن لشخص آخر اختبار هذه النظرية قبل أن أصل إليها؟

يحدث هذا عندما يكون لديك العديد من مثيلات الغزل تعمل بشكل متزامن. يمكنك استخدام الخيار --mutex الموثق هنا: https://yarnpkg.com/en/docs/cli/#toc -concurrency-and-mutex

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

يبدو أن cinderblock # 6650 يشبه حالة الحافة ولا ينبغي أن يؤثر حقًا على حل هذه المشكلة. المثال الآخر الذي ذكرته لا يزال يتم تشغيله في وضع التثبيت أثناء تثبيت آخر ، والذي ربما يمثل حزمة إشكالية حيث لا يجب تشغيل تثبيت آخر أثناء تثبيت الحزمة الخاصة بك. يمكن أيضًا تجنب ذلك بواسطة --ignore-scripts وهو أمر موصى به أيضًا.

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

BYK لم أر أي شخص يستخدم عمدًا yarn install داخل برنامج نصي install . هل رأيت هذا package.json التافه الذي ينتج هذه المشكلة؟ منحت شيئًا ما في الحزم التابعة هو الذي يثير هذا الخطأ ، وربما يكون لديهم install مدفون الذي تشير إليه. ومع ذلك ، فإن package.json يعمل بشكل جيد مع npm ...

ذات صلة ، كيف / أين يوصى بـ --ignore-scripts ؟ تعتمد العديد من الحزم على البرامج النصية بعد التثبيت لتعمل.

ذات صلة ، كيف / أين يوصى باستخدام البرامج النصية - الاغنية؟ تعتمد العديد من الحزم على البرامج النصية بعد التثبيت لتعمل.

أوه ، لقد أوصيت به هنا وأعتقد أن العديد من أعضاء Yarn كانوا صريحين حول هذا الموضوع. 😀 معظم الحزم جيدة ولكن هناك بالفعل عدد قليل من الحزم التي تعتمد على scrpits بعد التثبيت نعم.

هل رأيت هذه الحزمة التافهة 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 أوه ، اعتذاري إذا خرجت من هذا القبيل. لم أر طريقة لإعادة إنتاج الخطأ بشكل موثوق قبل ذلك ، حتى لو لم يكن مقطرًا بدرجة كافية لإصلاح المشكلة. كان هذا هو الدافع الكامل لذلك التعليق.

اغفر إصراري ولكني ما زلت لا أرى كيف يكون خيار كائن المزامنة (mutex) حلاً. لقد حاولت الركض باستخدام كائن المزامنة (mutex) وما زال يدير الغزل بشكل متزامن. ربما أخطأت في الاختبار الخاص بي ؟ توقعت أن يؤدي تشغيل yarn --mutex ... إلى تمرير هذا الخيار إلى النسخ الفرعية (مثل make ، على سبيل المثال). لقد جربت أيضًا اقتراحك بإضافة --install.mutex network إلى ملفي .yarnrc دون جدوى (الأخطاء نفسها). يؤكد --verbose أنه يتم تحميل الخيارات.

ربما يمكننا الوصول إلى هذا من اتجاه مختلف؟ ما هو الغزل الذي تفعله npm لا؟ لماذا لا تواجه npm نفس المشكلة؟

BYK ، استخدام علامة mutex غير مقبول تمامًا ، نظرًا لوجود خطأ إضافي في الغزل والذي سيمنعك بعد ذلك من تنفيذ أمر خيط آخر _... هذا يشبه الحل الذي قدمته لـ "لقد أغلقت المفاتيح الخاصة بي في سيارتي "كانت ،" لا تقلق ، لقد فكرت في ذلك! فقط استخدم هذه الأداة اليدوية لكسر جميع النوافذ وأقفال الأبواب ، الآن لن تتمكن من قفل سيارتك مرة أخرى! " 🙄

تافهة package.json أو لا ، هذه مشكلة كبيرة بدون حل أو حل بديل يجعل الغزل غير قابل للاستخدام تمامًا لكثير من الناس. يجب أن تحظى بمزيد من الاهتمام. خاصة إذا أخذنا في الاعتبار أنه كان مفتوحًا لمدة عامين.

sarink

BYK ، استخدام علامة كائن المزامنة (mutex) غير مقبول تمامًا ، نظرًا لوجود خطأ إضافي في الغزل والذي

لست على علم بمثل هذا الخطأ ، هل يمكنك توجيهي إليه إذا تم الإبلاغ عنه بالفعل؟ الطريقة التي يعمل بها --mutex هي منع أي مثيل yarn يستخدم نفس كائن المزامنة من العمل ، حتى ينتهي الأول. لذا فإن ما تقوله (وليس تصويرك) يبدو لي "يعمل كما هو متوقع" بالنسبة لي.

Package.json أم لا ، فهذه مشكلة كبيرة بدون حل أو حل بديل يجعل الغزل غير قابل للاستخدام تمامًا لكثير من الأشخاص. يجب أن تحظى بمزيد من الاهتمام. خاصة بالنظر إلى أنها كانت مفتوحة لمدة عامين.

ربما يجب أن تستغرق دقيقة للتفكير في التناقض الداخلي لجملك: "يجعل الخيوط غير صالحة للاستعمال تمامًا لكثير من الناس" و "كانت مفتوحة لمدة عامين". لا يوجد سوى 56 مشاركًا في هذا العدد ، والذي يتضمن حوالي 5 مشرفين على الغزل وما مجموعه 138 تعليقًا ، معظمهم يدورون حول نفس الأشياء. هذا ليس "عددًا كبيرًا من الأشخاص" ، هذا أشخاص _بعض_ ومن المؤكد أنه مهم بالنسبة لهم ولكني لا أرى أيًا منهم يأخذ هذا الأمر على أنه مهم لإرسال سطر واحد من إصلاح التعليمات البرمجية ويطالب ببساطة بإصلاحات لبرنامج يتم توفيره بالكامل مجانا لهم.

@كتلة جمرة

اغفر إصراري ولكني ما زلت لا أرى كيف يكون خيار كائن المزامنة (mutex) حلاً.

لا شيء لتسامحه فيما يتعلق بالمثابرة ، بل يجب الاحتفال به وأنت تحاول حل المشكلة :)

كنت أتوقع أن يؤدي تشغيل yarn --mutex ... إلى تمرير هذا الخيار إلى حالات الأطفال (مثل make does ، على سبيل المثال).

أنا متأكد من أنه لم يتم تناقله.

لقد جربت أيضًا اقتراحك بإضافة شبكة --install.mutex إلى ملف .yarnrc دون جدوى (نفس الأخطاء). - يؤكد الإفراط في الكلام أنه يتم تحميل الخيارات.

هذا مثير جدا للاهتمام. ربما يكون ذلك بسبب تشغيل مثيل الغزل الجديد من دليل آخر ، وتجاهل ملف .yarnrc . قد أقترح استخدام ملف عالمي .yarnrc مع هذا الخيار ، والذي قال إنني لا أعتقد أن هذا هو الحل المناسب. يجب أن نحاول هذا فقط لمعرفة ما إذا كان يمنع التثبيت بالفعل كما توقعنا سابقًا.

ربما يمكننا الوصول إلى هذا من اتجاه مختلف؟ ما هو الغزل الذي تفعله npm لا؟ لماذا لا تواجه npm نفس المشكلة؟

أنا أقدر التفكير المتنوع ، الذي قال إن Yarn و npm مختلفان تمامًا في كيفية عملهما ، ولا أعتقد أن هذا ينطبق حقًا هنا. إذا تمكنا من تحديد الحزمة التي تؤدي إلى تثبيت الخيوط كجزء من التثبيت الخاص بها ، فقد نجد حلاً. ربما يمكنك استبدال yarn القابل للتنفيذ ببعض البرامج النصية bash التي تسجل مصدر الاستدعاء و cwd وجميع الوسائط التي تم تمريرها ثم تشغيل الغزل كالمعتاد للحصول على معلومات تصحيح الأخطاء المفيدة والمتابعة من هناك؟

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

شكرًا جزيلاً على تعاونك مع cinderblock ، أقدر ذلك كثيرًا.

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

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

BYK أوه! لم أفكر في احتمال أن حزمة فرعية كانت تستدعي yarn ... في برنامج نصي. هل تعتقد أن السبب وراء عدم فشل npm install هو أنه عندما تعمل تبعياتها yarn ... هناك مثيل واحد فقط يعمل؟

تمكنت من حل المشكلة مع الجري

yarn cache clean
rm ./yarn.lock
yarn install

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

قد يتم حل هذا الأمر على جهازك المحلي ، ولكن تظل مشكلة الغزل في حالة استخدامه على bitrise. إنها صورة نظيفة ، من الصفر. التزامن الشبكي مطلوب في أي حال ، حتى عند تشغيل عملية الغزل المفردة.

BYK

يوجد 56 مشاركًا فقط في هذا العدد ، والذي يتضمن حوالي 5 مشرفين على الغزل وما مجموعه 138 تعليقًا ، معظمهم يدورون حول نفس الأشياء.

يبدو أن هذا رقم كبير جدًا لهذا الريبو. إنه أعلى إجمالي للتعليقات بين جميع الإصدارات المفتوحة والمغلقة ، وهو من بين أعلى أعداد المشاركين.

علاوة على ذلك ، أثناء البحث عن قضية ذات صلة (ربما) رأيت عددًا غير قليل من الأشخاص الذين لديهم مشكلات من المحتمل أن تكون مرتبطة. الشيء المؤسف هو أن الكثير من هؤلاء الأشخاص إما تخلوا عن الغزل ككل ، أو ابتلعوا تكلفة عمل --network-cocurrency 1 كلما تغير ملف قفل الغزل. هذا بالضبط ما كنت أفعله في أحد مشاريعي حتى اكتشفت أخيرًا أنه كان نصًا فرعيًا.

هذا ليس "الكثير من الأشخاص" ، هذا بعض الأشخاص ومن المؤكد أنه مهم بالنسبة لهم ولكني لا أرى أن أيًا منهم يأخذ هذا الأمر على أنه مهم لإرسال سطر واحد من إصلاح التعليمات البرمجية والمطالبة بإصلاحات لبرنامج يتم توفيره بالكامل مجانا لهم.

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

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

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

إذا تمكنا من تحديد الحزمة التي تؤدي إلى تثبيت الخيوط كجزء من التثبيت الخاص بها ، فقد نجد حلاً.

لدي مثال على حزمة تقوم بتنفيذ هذا النوع من السلوك هنا ، على الرغم من أنني لا أرى yarn install هناك (ما لم يفعل ذلك bob build ، على الرغم من أنه أظهر أيضًا هذه المشكلة مرة أخرى عندما كان الأمر "prepare": "node ./scripts/generate-mappings", ).

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

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

عثر التحديث على حل بديل يعمل ... وحدة git فرعية ومن ثم يكون موقع الحزمة هو المجلد المحلي. ليس مثاليا، لكنه يعمل.

نحن نواجه هذه المشكلة أيضًا في CircleCI وهي مشكلة كبيرة. يبدو أن المشكلة تتعلق باستخدام حزمة مستضافة على github.com وربما Linux (تعمل على OSX). خيارات mutex و network-concurrency الخيارات لا تفعل شيئًا.

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

إذا قمت بإزالة أنه يعمل في CircleCI. محليا يعمل معها على OSX مع خيوط 1.17.0.

لكنها لن تعمل على CircleCI مع العقدة 12.8.1 والغزل 1.17.3 (صورة دائرة دائرة / عقدة: الأحدث)

أو باستخدام Node 8.15.0 والغزل 1.12.3 (صورة دائرة دائرية / عقدة: 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

- نجح التزامن الشبكي 1 ، - فشل التزامن الشبكي 8 ، على الدائرة CI / العقدة: 10

هل يمكن أن يساعدني أحدهم في فهم سبب فشل Yarn في EEXIST و EOENT؟

في حالة EEXIST ، أتوقع أن يقوم Yarn بالتحذير من ذلك ، ثم تجاوز الملف.
في حالة EOENT ، أتوقع أن يقوم Yarn بإنشاء المجلد المفقود (والذي عادةً ما يكون سبب المشكلة).

أتفهم أنه قد يكون له آثار جانبية ، لذلك ربما يمكن جعل هذا السلوك أكثر صرامة بعلم (أو العكس).

ولكن ما الهدف من الاحتفاظ بهذه الأخطاء؟ إنها ليست مفيدة لأي شخص.

BYK آسف ، لقد رأيت للتو تعليقك

لست على علم بمثل هذا الخطأ ، هل يمكنك توجيهي إليه إذا تم الإبلاغ عنه بالفعل؟ الطريقة التي يعمل بها --mutex هي منع أي مثيل yarn يستخدم نفس كائن المزامنة من العمل ، حتى ينتهي الأول. لذا فإن ما تقوله (وليس تصويرك) يبدو لي "يعمل كما هو متوقع" بالنسبة لي.

هذا هو الخطأ: https://github.com/yarnpkg/yarn/issues/6650 كما هو مذكور في https://github.com/yarnpkg/yarn/issues/2629#issuecomment -481297806 (والذي أعتقد أنه مدفون الآن تحته "عرض المزيد من التاريخ" في هذا الموضوع)

لا يوجد سوى 56 مشاركًا في هذا العدد

حسنًا ، أعتقد أن هذه نقطة عادلة

هذا الخطأ لا يزال في الغزل v1.19.1. لا أفهم لماذا لا يقوم Yarn Team بإصلاح هذا الخطأ المزعج للغاية.
هنا هو .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 يساعد.
يساعد تنظيف (إزالة) جميع الدلائل node_modules في monorepo الخاص بي.

gitowiec يمكن أن تؤكد. استدعاءاتي المعبأة في حاويات yarn install هي بيانات تتسابق مع شيء ما في نظام الملفات ، وتفشل كل محاولة للحد من yarn إلى ملف واحد .yarnrc . أنا أستسلم وأعود إلى npm .

لقد اكتشفت أن مشكلتي كانت وجود تبعيات للحزم من مستودعات git عبر مستويات متعددة (مثل الحزمة الخاصة بي -> حزمة git -> حزمة git -> حزمة git). أيضًا ، لم تعمل ذاكرة التخزين المؤقت أثناء التثبيت بشكل جيد مقارنةً بـ npm (npm فقط الخروج مرة واحدة ، ولكن سحب الغزل عدة مرات نفس الحزمة أثناء التثبيت نفسه).
سأعود إلى npm. يعمل بشكل جيد منذ الإصدار السادس.

المذكورة أعلاه ، لا تزال هذه المشكلة قائمة. إليك ما أضفناه إلى config.yml الخاص بنا لـ circleci لإجراء اختباراتنا:
- 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 ، مع وحدة تخزين مضيفة [1] تحتوي على الكود الخاص بي AND node_modules بداخلها.

تم تغيير 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

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

كمرجع ، يحدث هذا عند التثبيت بعد مسح ذاكرة التخزين المؤقت للغزل و node_modules أو تحديث تبعية حزمة git معينة.

تبعية الحزمة المعينة هي تبعية لحزمة git أخرى أعتمد عليها بالفعل (كلاهما له خطوات متشابهة prepare تعتمد على TypeScript). إذا قمت بإجراء تغييرات على هذه التبعيات على #master وقمت بعمل yarn upgrade --latest ، تحدث المشكلة (وعلى yarn install اللاحقة.

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

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

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

تم فتح هذا bene لسنوات وما زال يحدث مع الغزل 1.22.0.
لقد قضيت ساعات فقط في محاولة تصحيح ما كان يحدث دون أي حظ ، ويبدو أنني لم أكن الوحيد.

الحل الوحيد الذي أراه الآن هو التبديل إلى npm.

gregory في حالتي ، أتذكر في يونيو 2019 ، كان الغزل سينتهي دائمًا بتثبيت الحزم المطلوبة ، حتى لو استغرق الأمر 2-4 عمليات إعادة تشغيل للوصول إلى هناك. علاوة على ذلك ، حتى مع عمليات إعادة التدوير هذه ، كان الغزل لا يزال أسرع من npm.

سأعيد التشغيل حتى ينتهي الغزل باستخدام أوامر مثل هذا:

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

كان الحل السهل بالنسبة لنا هو نشر حزمة خاصة واستخدامها بدلاً من رابط git. لا يزال مزعج رغم ذلك

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

من المحزن حقًا أن الإصلاح الوحيد هو القوة الغاشمة ... لا يُصدق أن لا أحد أصلح هذا بعد.

سي سي arcanis

محاولة تثبيت خيطين لاحقين ، يعمل في المرة الأولى ، ثم يفشل.

إدارة تبعية سريعة وموثوقة وآمنة.

هذا غير جدير بالثقة.
"[3/5] إحضار الحزم ...
خطأ https://registry.yarnpkg.com/lz4/-/lz4-0.6.3.tgz: فشل استخراج محتوى tar لملف غير محدد ، يبدو أن الملف تالف: "ENOENT: لا يوجد مثل هذا الملف أو الدليل ، الرابط '/ التطبيق /.cache/yarn/v6/npm-lz4-0.6.3-78df6bb69a36d7db6c2e849494876ba6e38e66d6-integrity/node_modules/lz4/build/Release/obj.target/build/Release/lz4.node '->' / /Release/lz4.node '. /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 يبدو أن هناك مشكلة في الاتصال بالشبكة. إعادة المحاولة ...
info [email protected] : النظام الأساسي "linux" غير متوافق مع هذه الوحدة.
info " [email protected] " هي تبعية اختيارية وفشل اختبار التوافق. استبعاده من التثبيت.
info [email protected] : النظام الأساسي "linux" غير متوافق مع هذه الوحدة.
info " [email protected] " هي تبعية اختيارية وفشل اختبار التوافق. استبعاده من التثبيت.
[4/5] ربط التبعيات ...
[5/5] بناء عبوات جديدة ...
إعداد تشغيل : js

[email protected] إعداد: mjs /app/.cache/yarn/v6/.tmp/43563e016bb56318ebd76037a0f6ce2f.73d5f4dbffab6f6a27f26c6611e32662c98c2891.prepare
BABEL_ESM = 1 babel src -d. - حفظ ملف التمديد

تم تجميع 39 ملفًا بنجاح باستخدام Babel.

[email protected] إعداد: js /app/.cache/yarn/v6/.tmp/43563e016bb56318ebd76037a0f6ce2f.73d5f4dbffab6f6a27f26c6611e32662c98c2891.prepare
بابل SR- د.

تم تجميع 39 ملفًا بنجاح باستخدام Babel.


[3/5] إحضار الحزم ...
خطأ https://registry.yarnpkg.com/lz4/-/lz4-0.6.3.tgz: فشل استخراج محتوى tar لملف غير محدد ، يبدو أن الملف تالف: "ENOENT: لا يوجد مثل هذا الملف أو الدليل ، الرابط '/ التطبيق /.cache/yarn/v6/npm-lz4-0.6.3-78df6bb69a36d7db6c2e849494876ba6e38e66d6-integrity/node_modules/lz4/build/Release/obj.target/build/Release/lz4.node '->' / /Release/lz4.node '. /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 للحصول على وثائق حول هذا الأمر.
info يبدو أن هناك مشكلة في الاتصال بالشبكة. إعادة المحاولة ...

""

أي شخص لديه أي فكرة عن سبب استدعاء الغزل

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) قم بتثبيت جميع النسخ في monorepo في جميع ملفات package.json .

يمكن تأكيد استمرار المشكلة على 1.22.4 . في الأصل ، كان mocha ، وبعد التأكد من أن جميع الحزم تستخدم نفس الإصدار ، أتلقى الآن أخطاءًا تم إنشاؤها من camelcase والتي لا أستخدمها حتى في مشروعي - على ما يبدو إنه من yargs ، ربما من Lerna.

خطأ حدث خطأ غير متوقع: "ENOENT: لا يوجد مثل هذا الملف أو الدليل ، lstat '/ code / project / src /pack / private-package / node_modules / camelcase'".

هل لي أن أسأل عما إذا كان هناك حل يلوح في الأفق؟ نستمر في حذف 20 node_modules و yarn.lock لإصلاحها.

هل لي أن أسأل عما إذا كان هناك حل يلوح في الأفق؟ نستمر في حذف 20 node_modules و yarn.lock لإصلاحها.

أنا شخصياً انتقلت إلى lerna فيما يتعلق بالتعامل مع مساحة العمل.

متأكد تمامًا من أن Lerna الحالية تنتقل ببساطة إلى Yarn.

تمكنت من حل مشكلاتي عن طريق إضافة nohoist config لحزم Ember - يستخدم بيئتي الحالية إصدارًا قديمًا من Ember ، وهو غير متوافق مع مساحات العمل.

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

أعتقد أن لدينا الحد الأدنى من النسخ هنا الآن: https://github.com/yarnpkg/yarn/issues/7212#issuecomment -637978197

نجح حذف yarn.lock ثم yarn install بالنسبة لي أيضًا

هل من أخبار هنا؟ لقد تعطلت عملية CI الخاصة بنا مع فشل جميع خطوط الأنابيب بسبب فشل تثبيت التبعية من الغزل. هذا كلام سخيف.

يؤدي تعيين --network-concurrency إصلاح أي شيء وتشغيل المهام على أجهزة نظيفة (لا توجد وحدات عقدة ، ولا توجد ذاكرة تخزين مؤقت للغزل).

cadavre لا تقدم أي ضمانات ولكن قد لا تكون هذه مشكلة في الإصدار 2 ، يمكنك تجربتها مع

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 الخاصة بي. الآن قابل للتكرار بنسبة 100٪ في أجهزتي CI و dev. إضافة --network-concurrency 1 لا يصلح ذلك بشكل موثوق. أنا لست خارج مساحة القرص أو inodes. أنا في WSL1. غزل 1.22.4.

لقد أصلحته عن طريق تغيير دليل ذاكرة التخزين المؤقت مؤقتًا ، والذي أحذفه بعد ذلك.

بالنسبة لي هو بناء Docker:

RUN yarn install --check-files --cache-folder .ycache && rm -rf .ycache
هل كانت هذه الصفحة مفيدة؟
0 / 5 - 0 التقييمات