Вы хотите запросить функцию или сообщить об ошибке ?
Ошибка
Каково текущее поведение?
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
git clone [email protected]:callstack/haul.git
cd haul
yarn install
Какое ожидаемое поведение?
yarn install
должен успешно установить зависимости.
Пожалуйста, укажите ваш node.js, yarn и версию операционной системы.
12.14.1
/ 13
(воспроизводится на обоих)1.21.1
Такое же поведение наблюдается при попытке добавить зависимость к пакету рабочей области:
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
.
Размещено на переполнении стека; так, на всякий случай
Почему Yarn выдает сообщение «Неизменяемое нарушение: ожидаемый пакет рабочей области существует», когда я пытаюсь обновить некоторые зависимости?
@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. Очень рекомендую!
Самый полезный комментарий
yarn policies set-version 1.18.0
меня работаетhttps://classic.yarnpkg.com/en/docs/cli/policies/