Yarn: فشل تثبيت التبعيات في مساحة العمل: من المتوقع وجود حزمة مساحة العمل

تم إنشاؤها على ٨ يناير ٢٠٢٠  ·  56تعليقات  ·  مصدر: yarnpkg/yarn

هل تريد طلب ميزة أو الإبلاغ عن خطأ ؟
خلل برمجي

ما هو السلوك الحالي؟
فشل yarn install مع:

error An unexpected error occurred: "expected workspace package to exist for \"@babel/template\"".

بدأ الخطأ في الحدوث بعد ترقية الغزل إلى 1.19 ولا يزال موجودًا في أحدث إصدار مستقر 1.21.1

يمكن ملاحظة أخطاء مماثلة في # 7797 و # 7734

إذا كان السلوك الحالي عبارة عن خطأ ، فيرجى تقديم خطوات إعادة الإنتاج.
يمكن تكرار الخطأ عند تثبيت التبعيات في https://github.com/callstack/haul

  1. git clone [email protected]:callstack/haul.git
  2. cd haul
  3. yarn install

ما هو السلوك المتوقع؟

yarn install بتثبيت التبعيات بنجاح.

يرجى ذكر node.js والغزل وإصدار نظام التشغيل.

  • العقدة: 12.14.1 / 13 (يمكن استنساخه على كلاهما)
  • الغزل: 1.21.1
  • نظام التشغيل: macOS 10.15.2

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

yarn policies set-version 1.18.0 يعمل بالنسبة لي - سيتحول الغزل تلقائيًا إلى هذا الإصدار للمشروع فقط! أنيق جدا!
https://classic.yarnpkg.com/en/docs/cli/policies/

ال 56 كومينتر

تجربة نفس السلوك عند محاولة إضافة تبعية إلى حزمة مساحة العمل:

yarn workspace @scope/mypackage add npm-package

error An unexpected error occurred: "expected workspace package to exist for \"@babel/highlight\"".

تفاصيل مماثلة

Yarn version: 
  1.21.1

Node version: 
  10.17.0

Platform: 
  darwin x64

OS
  macOS 10.15.2

تواجه نفس المشكلة مع العقدة @ 10 :

An unexpected error occurred: "expected workspace package to exist for \"lru-cache\"".
Node: 10.15.3
yarn: 1.21.1
OS: macOS 10.15.1

لقد وجدت حلا (مؤقتا) عن طريق تشغيل ميزة السياسات من الغزل في بلدي الريبو:

> yarn policies set-version 1.18.0

والتي تعني في الأساس:

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

نرى هذا أيضًا في Yarn 1.21.1. يمكنني إعادة إنشاء الخطأ في بلدي مستودع عند تشغيل yarn upgrade-interactive ، _but_ الإصدارات الاهتزاز يدويا في package.json لا يزال يعمل بشكل جيد لسبب ما.

مواجهة هذا أيضًا:

error An unexpected error occurred: "expected workspace package to exist for \"string-length\"".

عند محاولة إضافة تبعية غير مرتبطة داخل واحدة على حزم مساحة العمل الخاصة بي yarn add @reduxjs/toolkit . تعمل إضافة dep يدويًا إلى package.json متبوعًا بـ yarn .

حاولت yarn cache clean ، وحذفت مجلدي yarn.lock و node_modules ، بدون تغيير.

▶ yarn --version
1.21.1

نفس الخطأ هنا:

$ yarn workspace @scope/web add ramda
error An unexpected error occurred: "expected workspace package to exist for \"chalk\"".
info If you think this is a bug, please open a bug report with the information provided in "/home/user/projects/web/apps/web/yarn-error.log".
info Visit https://yarnpkg.com/en/docs/cli/add for documentation about this command.
error Command failed.
Exit code: 1

مضيفا yarn-error.log

Arguments: 
  /home/user/.nvm/versions/node/v10.13.0/bin/node /home/user/.nvm/versions/node/v10.13.0/lib/node_modules/yarn/lib/cli.js add ramda

PATH: 
  /home/user/.yarn/bin:/home/user/.config/yarn/global/node_modules/.bin:/home/user/.yarn/bin:/home/user/.config/yarn/global/node_modules/.bin:/home/user/.nvm/versions/node/v10.13.0/bin:/usr/local/bin:/usr/bin:/bin:/usr/local/games:/usr/games:/home/user/Android/Sdk/emulator:/home/user/Android/Sdk/tools:/home/user/Android/Sdk/tools/bin:/home/user/Android/Sdk/platform-tools:/home/user/Android/Sdk/emulator:/home/user/Android/Sdk/tools:/home/user/Android/Sdk/tools/bin:/home/user/Android/Sdk/platform-tools

Yarn version: 
  1.21.1

Node version: 
  10.13.0

Platform: 
  linux x64

Trace: 
  Invariant Violation: expected workspace package to exist for "chalk"
      at invariant (/home/user/.nvm/versions/node/v10.13.0/lib/node_modules/yarn/lib/cli.js:2314:15)
      at _loop2 (/home/user/.nvm/versions/node/v10.13.0/lib/node_modules/yarn/lib/cli.js:94898:9)
      at PackageHoister.init (/home/user/.nvm/versions/node/v10.13.0/lib/node_modules/yarn/lib/cli.js:94957:19)
      at PackageLinker.getFlatHoistedTree (/home/user/.nvm/versions/node/v10.13.0/lib/node_modules/yarn/lib/cli.js:48743:20)
      at PackageLinker.<anonymous> (/home/user/.nvm/versions/node/v10.13.0/lib/node_modules/yarn/lib/cli.js:48754:27)
      at Generator.next (<anonymous>)
      at step (/home/user/.nvm/versions/node/v10.13.0/lib/node_modules/yarn/lib/cli.js:310:30)
      at /home/user/.nvm/versions/node/v10.13.0/lib/node_modules/yarn/lib/cli.js:328:14
      at new Promise (<anonymous>)
      at new F (/home/user/.nvm/versions/node/v10.13.0/lib/node_modules/yarn/lib/cli.js:5301:28)

npm manifest: 
{
   ...
}

أواجه نفس المشكلات منذ v1.19 .
yarn upgrade-interactive غير قابل للاستخدام ؛ سوف يفشل في تطبيق تحديثات الإصدار.

بعد التحديث إلى v1.21 لم أعد قادرًا على yarn install بعد الآن. دائمًا ما يلقي هذا الخطأ:

توقع وجود حزمة مساحة العمل لـ ...

أدى الرجوع إلى 1.18 إصلاح كلتا المشكلتين.

يجب أن أشير إلى أن هذه المشكلات تحدث فقط في مشروع واحد ، وهو monorepo يستخدم lerna و yarn workspaces .

نفس تجربةraspo
لا يمكن تثبيت الحزم من سطر الأوامر بعد الآن في monorepo ممكّن مساحة العمل الخاصة بي.

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

npx [email protected] add your-deps-here

احصل أيضًا على هذا من 1.17 إلى 1.22. يبدو أنها مجموعة من الحزم - تبدأ بـ istanbul-lib-instrument . ثم jest-snapshot ثم cssstyle بشكل متكرر.

Invariant Violation: expected workspace package to exist for "istanbul-lib-instrument"
    at invariant (/usr/local/Cellar/yarn/1.22.0/libexec/lib/cli.js:2314:15)
    at _loop2 (/usr/local/Cellar/yarn/1.22.0/libexec/lib/cli.js:94959:9)
    at PackageHoister.init (/usr/local/Cellar/yarn/1.22.0/libexec/lib/cli.js:95018:19)
    at PackageLinker.getFlatHoistedTree (/usr/local/Cellar/yarn/1.22.0/libexec/lib/cli.js:48743:20)
    at PackageLinker.<anonymous> (/usr/local/Cellar/yarn/1.22.0/libexec/lib/cli.js:48754:27)
    at Generator.next (<anonymous>)
    at step (/usr/local/Cellar/yarn/1.22.0/libexec/lib/cli.js:310:30)
    at /usr/local/Cellar/yarn/1.22.0/libexec/lib/cli.js:328:14
    at new Promise (<anonymous>)
    at new F (/usr/local/Cellar/yarn/1.22.0/libexec/lib/cli.js:5301:28)

lerna.json

{
  "packages": [
    "packages/*",
    "apps/*"
  ],
  "version": "1.0.17",
  "npmClient": "yarn",
  "useWorkspaces": true
}

package.json:

{
...
"workspaces": {
    "packages": [
      "apps/*",
      "packages/*"
    ],
    "nohoist": [
      "**/webpack-dev-server"
    ]
  },
...
}

أنا أيضا أتلقى هذا الانحدار أي أخبار؟

نفس الشيء هنا ، ترقية تفاعلية monorepo و yarn على mac

Invariant Violation: expected workspace package to exist for "stack-utils"
    at invariant (/usr/local/Cellar/yarn/1.22.0/libexec/lib/cli.js:2314:15)
    at _loop2 (/usr/local/Cellar/yarn/1.22.0/libexec/lib/cli.js:94959:9)
    at PackageHoister.init (/usr/local/Cellar/yarn/1.22.0/libexec/lib/cli.js:95018:19)
    at PackageLinker.getFlatHoistedTree (/usr/local/Cellar/yarn/1.22.0/libexec/lib/cli.js:48743:20)
    at PackageLinker.<anonymous> (/usr/local/Cellar/yarn/1.22.0/libexec/lib/cli.js:48754:27)
    at Generator.next (<anonymous>)
    at step (/usr/local/Cellar/yarn/1.22.0/libexec/lib/cli.js:310:30)
    at /usr/local/Cellar/yarn/1.22.0/libexec/lib/cli.js:328:14
    at new Promise (<anonymous>)
    at new F (/usr/local/Cellar/yarn/1.22.0/libexec/lib/cli.js:5301:28)
$ yarn lerna --version
3.20.2
$ yarn version
1.22.0
$ node --version
v13.8.0

كحل مؤقت ، استخدم شيئًا yvm واستخدم الإصدار 1.18.0 . يعمل لدي

yarn policies set-version 1.18.0 يعمل بالنسبة لي - سيتحول الغزل تلقائيًا إلى هذا الإصدار للمشروع فقط! أنيق جدا!
https://classic.yarnpkg.com/en/docs/cli/policies/

لقد عانيت للتو من نفس المشكلة على monorepo Lerna + Yarn (الإصدار 1.22). حل إعادة إنشاء yarn.lock .

يبدو هذا كنسخة مكررة من # 7734.

تشغيل هذا لـ @ storybook / api. يبدو أن حل nerdyman قد نجح معي في هذه الأثناء.

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

npx [email protected] add your-deps-here

إنه عمل بالنسبة لي

واجهت نفس المشكلة وعلى الرغم من أن حذف yarn.lock وتشغيل yarn install (أو yarn workspace some-workspace bla bla bla ) نجح ، كانت المشكلة أنني كنت أستخدم إصدارًا أحدث من الغزل مقارنة بأعضاء فريقي .

لذا كان الحل هو استخدام yarn policies . أنت تقوم بتشغيل yarn policies set-policy وسيؤدي ذلك إلى تنزيل أحدث إصدار ثابت من الغزل وحفظه في .yarn/ وكذلك تحديث .yarnrc للإشارة إلى إصدار الغزل الذي تم تنزيله. بهذه الطريقة يمكنك التأكد من أن كل شخص يستخدم نفس إصدار الغزل وتجنب هذا النوع من القيم.

مزيد من المعلومات هنا: https://classic.yarnpkg.com/en/docs/cli/policies#toc -policies-set-version

لذا فإن حل هذه المشكلة هو تخفيض yarn ، سيكون الغزل 2.0 ممتعًا

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

يحدث هذا عادةً إذا كنت تستخدم إصدارًا مختلفًا من نفس حزمة npm في مساحات العمل.

لنفترض أن لديك مساحات عمل @scope/www و @scope/api وكلاهما يحتوي على حزمة eslint npm. لكن @scope/www يستخدم [email protected] بينما @scope/api يستخدم [email protected] . أيضًا ، لديك [email protected] في الجذر packages.json .

ثم إذا حاولت تثبيت حزمة على إحدى مساحات العمل ، فستحصل على خطأ error An unexpected error occurred: "expected workspace package to exist for \"eslint\"". . لأنه ليس هناك أي من إصداراتك eslint متطابقة.

بمجرد جعلها متطابقة ، فلن تحصل على أي خطأ.

هذا مثير للاهتمام ، شكرًا على التفاصيل الإضافية abdullahceylan - فضولي فقط: كيف تعاملت الغزل قبل 1.19.2 (بدون خطأ) مع هذا الموقف؟

كما أنه يعطي نفس الخطأ لي friederbluemle

كنت أعاني من هذه المشكلة لأن لدي إصدارات مختلفة من @babel/core في مساحات العمل الخاصة بي ، تمامًا كما قال abdullahceylan . أدى تحديث @babel/core إلى نفس الإصدار إلى حل المشكلة بالنسبة لي! 🙏

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

كان لديه هذه المشكلة أيضًا ولكن يمكنه حلها:
السبب هو أن لدي حزمة (eslint) في إحدى الحزم الخاصة بي وفي مساحة عمل الجذر. تمت إزالته من مساحة عمل الجذر وكان كل شيء يعمل مرة أخرى.

اكتشفت أن مشاكلي أتت من أن @babel/core في nextjs تم إصلاحه على 7.7.7 وكانت بعض الوحدات الأخرى تتطلب ^7.10.0 ولهذا السبب يضع الغزل مجلدًا إضافيًا node_module داخل الحزمة الخاصة بك إلى حل نزاعات التبعية.

لقد قمت بحلها باستخدام resolutions عن طريق العمل

  "resolutions": {
    "**/@babel/core": "7.10.2"
  },

وفعلت yarn install / npx lerna bootstrap

في التطبيق الذي أعمل عليه ، تمكنت من حل هذا الخطأ عن طريق التغيير

"workspaces": [
  "packages/**/*"
],

ل

"workspaces": [
  "packages/@org1/*",
  "packages/@org2/*",
  "packages/*"
],

ربما يكتشف yarn عن طريق الخطأ مساحة عمل متداخلة داخل node_modules لإحدى الحزم الخاصة بي؟ لم يكن لدي الوقت للنظر في الأمر. كنت أستخدم الغزل 1.22.4.

تحرير: يبدو أن هذا الأمر مدعوم بالادعاءات القائلة بأن دمج إصدارات التبعية (والتي بدورها ترفعها من دليل packages ) يمكن أن تحل هذه المشكلة أيضًا.

ما نجح معي هو

yarn lerna add npmpackage --scope=@scope/my-package

يمكنك استخدام npx بدلاً من yarn هنا

نفس الشيء هنا yarn add ينفجر تمامًا عند محاولة القيام بأي حزمة. الرجاء إصلاح 🙏

الوقوع فجأة في هذا الأمر تمامًا من فراغ.

تحرير: كان لدي حزمة محلية في mono-repo الخاص بي بنفس الاسم مثل تبعية npm ، كما هو مذكور بواسطةabdullahceylan.

واجهت نفس المشكلة مع yarn add . في حالتي ، كان يشتكي من eslint . قمت يدويًا بتعيين إصدار eslint إلى 7.2.0 .
ذهبت من خلال yarn.lock للتحقق من التبعيات التي تطلب إصدارًا مختلفًا من eslint (فقط استخدمت أداة "Find" مع الكلمة الرئيسية eslint ).
أدركت أن الكثير من التبعيات كانت تتطلب الإصدار 6.8.0 وكانوا يحاولون تثبيته.

لقد قمت بحل المشكلة بتعيين إصدار eslint إلى 6.8.0 .
إما أن تختار منها إضافة إلى resolutions المعلمة لديك package.json الملف. في حالتي ، كان من الممكن أن يكون مثل

"resolutions": {
  "eslint": "6.8.0"
}

آمل أن يساعد شخص ما.

شكرا جزيلا dxit ، هذا يساعدني 😄

هل تمكن أي شخص من تحديد سبب ذلك بالضبط؟ هل سيكون هناك إصلاح مدرج في الإصدار 1؟

الجري في نفس الشيء على monorepo الذي يستخدم الرفع. العمل حوله مع اختراق npx لتثبيت الأقسام.

بافتراض أنك تستخدم Lerna ، mmun قد يكون هنا لمزيد من التفاصيل.

كان لدي هذا الخطأ مع البيئة أدناه:

Node: 10.20.1
Yarn: 1.22.4

كان يعمل مع الإعداد أدناه.

Node: 10.15.3
Yarn: 1.13.0

لقد حاولت تعيين Yarn على 1.18.0 لكن يبدو أنه لا يعمل مع Node 10.20.1

ملاحظة لنفسي: قم بإعادة زيارة هذا بمجرد إصدار الإصدار التالي من yarn .

لن يكون لدى dkempner yarn 1 إصدارات جديدة لا أعتقد ... إذا كانت كذلك ، فهي هادئة جدًا في هذا الريبو (التزام واحد فقط في الشهرين الماضيين). يمكنك أن تجرب مع yarn @ berry tho

بعد اختبار كل إصدار ، يبدأ الخطأ في 1.19.2 ، على الأقل لنظام Windows. لذلك هناك بعض التغيير بين 1.19.1 - 1.19.2 فواصل

@ thefat32 - نعم ، هذا صحيح. ليس فقط على Windows. لدي هذا الأمر في السجل الخاص بي والذي أستخدمه كثيرًا كحل بديل عندما أرى الخطأ:

npx [email protected] upgrade-interactive

لدي نفس المشكلة عند إضافة بعض الاعتماد على الغزل monorepo.

error An unexpected error occurred: "expected workspace package to exist for \"jest\"".

مرحبًا يا شباب ، لقد واجهت نفس المشكلة بالضبط!

An unexpected error occurred: "expected workspace package to exist for \"@jest-cli"".
كنت أواجه هذه المشكلة لأن لدي نسخة مختلفة من jest-cli في مساحة العمل الخاصة بي. تم حلها عن طريق ترقية جميع الحزم إلى أحدث إصدار.

abdullahceylan هل تعرف ما إذا كان هذا لا يزال هو الحال مع التبعيات _transitive_؟ لدي نفس الفشل مثل أي شخص آخر ولكن في حالتي ، فإن التبعية ليست ملكي لذا لا أعرف كيف يمكنني ترقيتها. وهل يغير workspaces.nohoist أي شيء؟

customcommander TBH لم أواجه موقفًا مثل سأحاوله في مثل هذه الحالة هو استخدام خيار مثل "**/pagkage-name" مقابل nohoist الخيار.

customcommander TBH لم أواجه موقفًا مثل سأحاوله في مثل هذه الحالة هو استخدام خيار مثل "**/pagkage-name" مقابل nohoist الخيار.

لماذا ا؟

تواجه هذا حاليًا مع lerna

لقد قمنا بتضييق هذا الأمر لبدء الحدوث بالنسبة لنا بـ v1.19.2

العقدة: v12.13.0
الغزل: يعمل <= v1.19.1
نظام التشغيل: macOS 10.15.6

https://github.com/yarnpkg/yarn/compare/v1.19.1...v1.19.2

yarn policies set-version 1.19.1 لدينا مع lerna

تغيير سياسات الغزل إلى yarn policies set-version 1.18.0 عملت معي أيضًا.
كنت في:
الغزل : 1.22.5
العقدة : 10.21
نظام التشغيل : Arch Linux (x64)

ليس لدي حل يتجاوز الحلول المقترحة بالفعل في هذا الموضوع ، ولكن يبدو أن PR https://github.com/yarnpkg/yarn/pull/7289 هو المكان الذي تم فيه تقديم الانحدار ، وعلى وجه التحديد ، هذه الخطوط .

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

لقد أنشأت الحد الأدنى من repro هنا: https://github.com/smably/yarn-workspaces-hoisting-bug. في هذه الحالة ، كنت أحصل على expected workspace package to exist for "pretty-quick" بالرغم من أن pretty-quick يظهر مرة واحدة فقط في الشجرة. يبدو أن الخطأ الفعلي يحدث عندما يحاول الغزل رفع التبعيات المتعدية pretty-quick .

حاولت البحث في قاعدة بيانات الغزل لمعرفة ما إذا كان بإمكاني إصلاح المشكلة ، لكن عددًا قليلاً من اختبارات الوحدة تفشل على جهازي ، رابط "المساهمة" في README معطل ، --inspect console.log أو debugger للعمل (أظن أن yarn يولد عمليات فرعية ولا يرثون --inspect للعقدة

في حالتي ، قد يكون إصدار confilcts من @babel/core . لقد قمت بحلها عن طريق: تحقق من الإصدار المثبت بواسطة yarn why @babel/core ، أضف دقة إلى الحزمة التي ليست نفس الإصدار لتوحيد الإصدار.

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

لقد حددت yarn policies set-version 1.19.1 معتقدًا أن كل شيء على ما يرام. بعد بضع ساعات ، قمت بإنشاء تطبيق Next.js وحصلت على هذا Error occurred prerendering page... . لقد جربت حرفيًا كل شيء تحت الشمس ، وأدركت للتو أن صنع yarn policies set-version 1.19.1 هو السبب.

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

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

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

تعاني أيضًا من هذه المشكلة. يعمل حل @ export-mike كإصلاح عاجل ، شكرًا لك

هل هناك أي رد رسمي / خارطة طريق إصلاح من فريق yarn dev حول هذا الأمر؟

كان الحل هو التبديل إلى pnpm. أوصي به بشدة!

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