Yarn: Не удалось установить зависимости в рабочей области: ожидаемый пакет рабочей области существует

Созданный на 8 янв. 2020  ·  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, yarn и версию операционной системы.

  • Узел: 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 / Release), а затем, наконец, обновит вашу конфигурацию, чтобы указать на новый файл (используя yarn-path ).

Также это можно увидеть в 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 устранил обе проблемы.

Я должен отметить, что эти проблемы возникают только в одном проекте, который является монорепозиторием, использующим lerna и yarn workspaces .

Тот же опыт, что и @raspo
Больше не могу устанавливать пакеты из командной строки в моем рабочем пространстве с включенным монорепоратором.

Я не хотел переходить на более раннюю версию yarn, поскольку она исходит от моего диспетчера пакетов, поэтому я использовал 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/

У меня была такая же проблема на монорепозитории Lerna + Yarn (v1.22). Решено пересоздать yarn.lock .

Это похоже на дубликат # 7734.

Встречаюсь с @ storybook / api. Похоже, что временное решение

Я не хотел переходить на более раннюю версию yarn, поскольку она исходит от моего диспетчера пакетов, поэтому я использовал 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 будет интересной.

@ приносит извинения, если я неправильно прочитал сарказм в вашем ответе. Я не видел, чтобы кто-нибудь отправлял PR, чтобы исправить это в 1.x. Возможно, что в других вопросах люди представили исправления для этой или других ошибок, которые были отклонены, и это меня огорчит. Если есть множество PR для 1.x, которые игнорируются, я надеюсь, что сопровождающие будут приветствовать членов сообщества, которые хотят помочь поддерживать 1.x. Без PR и поддержки со стороны сообщества трудно кого-либо обвинить в желании сосредоточиться на своей активной ветке разработки.

Обычно это происходит, если вы используете другую версию того же пакета 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 - Просто любопытно: как Yarn до 1.19.2 (без ошибок) справлялся с этой ситуацией?

Это также дает мне ту же ошибку

У меня возникла эта проблема, потому что в моих рабочих областях были разные версии @babel/core , как сказал @abdullahceylan . Обновление @babel/core до той же версии решило проблему для меня! 🙏

Хотелось бы, чтобы для этой ошибки было более конкретное сообщение.

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

Выяснилось, что мои проблемы возникли из-за того, что @babel/core в nextjs был исправлен на 7.7.7 а некоторые другие модули требовали ^7.10.0 поэтому yarn помещает дополнительную папку 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 полностью взрывается при попытке сделать любой пакет. Пожалуйста, исправьте 🙏

Вдруг нарвался на это совершенно неожиданно.

Изменить: у меня был локальный для моего монорепо пакет с тем же именем, что и у зависимости npm, как упоминалось @abdullahceylan.

У меня была такая же проблема с yarn add . В моем случае он жаловался на eslint . Я вручную установил для версии eslint значение 7.2.0 .
Я просмотрел свои yarn.lock чтобы проверить, какие зависимости запрашивают другую версию eslint (просто использовал инструмент «Найти» с ключевым словом eslint ).
Я понял, что для множества зависимостей требуется версия 6.8.0 и они пытались ее установить.

Я решил проблему, установив для версии eslint значение 6.8.0 .
Либо вы можете добавить параметр resolutions в свой файл package.json . В моем случае это было бы как

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

Надеюсь, это может кому-то помочь.

Большое спасибо @dxit , что мне помогает 😄

Кто-нибудь смог определить, что именно вызывает это? Будет ли исправление включено в v1?

Встречаем то же самое на монорепозитории, использующем подъем. Обойти это можно с помощью хака npx для установки deps.

Предполагая, что вы используете Lerna , Здесь .

У меня была эта ошибка с приведенной ниже средой:

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 не будет иметь новых версий, я не думаю ... Если они есть, в этом репо ужасно тихо (только 1 фиксация за последние 2 месяца). Вы можете попробовать с пряжей @ berry tho

После тестирования каждого выпуска ошибка появляется в 1.19.2, по крайней мере, для Windows. Итак, некоторые изменения между перерывами 1.19.1 - 1.19.2

@ thefat32 -

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 - это место, где была введена регрессия, и, в частности, эти строки .

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

Я создал здесь минимальное воспроизведение: https://github.com/smably/yarn-workspaces-hoisting-bug. В этом случае я получал expected workspace package to exist for "pretty-quick" хотя pretty-quick появляется в дереве только один раз. Фактическая ошибка, похоже, происходит, когда yarn пытается поднять транзитивные зависимости pretty-quick .

Я попытался порыться в кодовой базе пряжи, чтобы увидеть, смогу ли я исправить проблему, но довольно много модульных тестов не работают на моей машине, ссылка "способствующие" в README не работает, и у меня было много проблем с отладкой потому что мне не удалось заставить работать операторы console.log или debugger (я предполагаю, потому что yarn порождает дочерние процессы, а они не наследуют --inspect узла

В моем случае это может быть конфигурация версии @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, я получаю то же самое ошибка.

Понятия не имею, что происходит, tbh. Я буквально переустановил узел, пряжу и т. Д. Единственным решением было удалить приложение и снова его клонировать.

У меня была такая же проблема с пакетом eslint . Оказывается, проблема заключалась в том, что корень моей рабочей области имел eslint в качестве зависимости разработчика, но у меня также был пакет рабочей области, который зависел от пакета npm, который зависел от другой версии eslint, что, как я полагаю, в конечном итоге каким-то образом нарушило процесс подъема. Все, что я сделал, это убедился, что все пакеты зависят от одной и той же версии eslint, и ошибка исчезла.

также испытывает эту проблему. Решение @export-mike работает как исправление, спасибо

Есть ли какой-либо официальный ответ / план исправлений от команды разработчиков yarn по этому поводу?

Мое решение состояло в том, чтобы перейти на pnpm. Очень рекомендую!

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