Yarn: Fehler beim Installieren von Abhängigkeiten im Arbeitsbereich: Es wird erwartet, dass das Arbeitsbereichspaket vorhanden ist

Erstellt am 8. Jan. 2020  ·  56Kommentare  ·  Quelle: yarnpkg/yarn

Möchten Sie eine Funktion anfordern oder einen Fehler melden?
Insekt

Wie ist das aktuelle Verhalten?
yarn install schlägt fehl mit:

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

Der Fehler trat nach dem Upgrade von Garn auf 1.19 und besteht immer noch in der neuesten stabilen Version 1.21.1

Ähnliche Fehler sind in #7797 und #7734 zu beobachten

Wenn das aktuelle Verhalten ein Fehler ist, geben Sie bitte die Schritte zum Reproduzieren an.
Der Fehler kann bei der Installation von Abhängigkeiten in https://github.com/callstack/haul . reproduziert werden

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

Was ist das erwartete Verhalten?

yarn install sollte Abhängigkeiten erfolgreich installieren.

Bitte geben Sie Ihre node.js-, Garn- und Betriebssystemversion an.

  • Knoten: 12.14.1 / 13 (auf beiden reproduzierbar)
  • Garn: 1.21.1
  • Betriebssystem: macOS 10.15.2

Hilfreichster Kommentar

yarn policies set-version 1.18.0 funktioniert für mich - Garn wird automatisch nur für das Projekt auf diese Version umgestellt! so ordentlich!
https://classic.yarnpkg.com/en/docs/cli/policies/

Alle 56 Kommentare

Das gleiche Verhalten tritt auf, wenn Sie versuchen, einem Arbeitsbereichspaket eine Abhängigkeit hinzuzufügen:

yarn workspace @scope/mypackage add npm-package

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

Ähnliche Details

Yarn version: 
  1.21.1

Node version: 
  10.17.0

Platform: 
  darwin x64

OS
  macOS 10.15.2

Habe das gleiche Problem mit node@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

Ich habe eine (vorübergehende) Problemumgehung gefunden, indem ich die Richtlinienfunktion von Garn in meinem Repository ausgeführt habe:

> yarn policies set-version 1.18.0

was im Grunde bedeutet:

Unter der Haube lädt der Befehl einfach die Einzeldatei-Version aus dem GitHub-Repository herunter, speichert sie in Ihrem Projekt (im Ordner .yarn/releases) und aktualisiert schließlich Ihre Konfiguration so, dass sie auf die neue Datei verweist (mithilfe von "Garn-Pfad") ).

Sehen Sie dies auch in Garn 1.21.1. Ich kann den Fehler in meinem Repository reproduzieren, wenn ich yarn upgrade-interactive ausführe, _aber_ das manuelle Anstoßen von Versionen in package.json aus irgendeinem Grund immer noch gut funktioniert.

Auch das begegnet:

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

Wenn ich versuche, eine unabhängige Abhängigkeit zu meinen Workspace-Paketen hinzuzufügen yarn add @reduxjs/toolkit . Das manuelle Hinzufügen des dep zu package.json gefolgt von einem yarn funktioniert.

Versuchte yarn cache clean und löschte beide Ordner "Garn.lock" und "Node_modules", keine Änderung.

▶ yarn --version
1.21.1

Gleicher Fehler hier:

$ 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

Garnfehler.log hinzufügen

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: 
{
   ...
}

Ich habe seit v1.19 die gleichen Probleme.
yarn upgrade-interactive wurde unbrauchbar; Es würde fehlschlagen, die Versionsupdates anzuwenden.

Nach dem Update auf v1.21 ich yarn install nicht mehr. Es wirft immer diesen Fehler:

erwartetes Workspace-Paket für ...

Ein Downgrade auf 1.18 beide Probleme behoben.

Ich sollte darauf hinweisen, dass diese Probleme nur bei einem Projekt auftreten, bei dem es sich um ein Monorepo handelt, das lerna und yarn workspaces .

Gleiche Erfahrung wie @raspo
Ich kann keine Pakete mehr über die Befehlszeile in meinem Arbeitsbereich mit aktiviertem Monorepo installieren.

Ich wollte Garn nicht downgraden, da es von meinem Paketmanager kommt, also habe ich npx als schrecklichen Workaround verwendet.

npx [email protected] add your-deps-here

Holen Sie sich auch diese 1.17 bis 1.22. Es scheint eine Handvoll Pakete zu sein - beginnend mit istanbul-lib-instrument . Dann jest-snapshot dann cssstyle wiederholt.

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"
    ]
  },
...
}

Ich bekomme auch diese Regression irgendwelche Neuigkeiten?

Das gleiche hier, Monorepo und interaktives Garn-Upgrade auf dem 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

Als temporäre Lösung verwenden Sie etwas yvm und verwenden Sie die Version 1.18.0 . Funktioniert bei mir

yarn policies set-version 1.18.0 funktioniert für mich - Garn wird automatisch nur für das Projekt auf diese Version umgestellt! so ordentlich!
https://classic.yarnpkg.com/en/docs/cli/policies/

Ich hatte gerade das gleiche Problem bei einem Monorepo Lerna + Yarn (v1.22). Gelöst, indem yarn.lock .

Dies sieht aus wie ein Duplikat von #7734.

Läuft in diesem für @storybook/api. Der Workaround von

Ich wollte Garn nicht downgraden, da es von meinem Paketmanager kommt, also habe ich npx als schrecklichen Workaround verwendet.

npx [email protected] add your-deps-here

es ist arbeit für mich

Ich hatte das gleiche Problem und obwohl es funktionierte, yarn.lock löschen und yarn install (oder yarn workspace some-workspace bla bla bla ) auszuführen, bestand das Problem darin, dass ich im Vergleich zu meinen Teammitgliedern eine neuere Garnversion verwendete .

Die Lösung bestand also darin, yarn policies . Sie führen im Grunde yarn policies set-policy und dies lädt die neueste stabile Version von Garn herunter und speichert sie in .yarn/ und aktualisiert auch Ihr .yarnrc , um auf die heruntergeladene Garnversion zu verweisen. Auf diese Weise können Sie sicherstellen, dass alle die gleiche Garnversion verwenden und diese Art von Problemen vermeiden.

Mehr Infos hier: https://classic.yarnpkg.com/en/docs/cli/policies#toc -policies-set-version

Die Lösung für dieses Problem besteht also darin, yarn herunterzustufen, Garn 2.0 wird Spaß machen

@remorses entschuldigt sich, wenn ich in Ihrer Antwort Sarkasmus falsch gelesen habe. Ich habe niemanden gesehen, der eine PR eingereicht hat, um dies in 1.x zu beheben. Es ist möglich, dass Leute in anderen Problemen Korrekturen für diesen oder andere Fehler eingereicht haben, die abgelehnt wurden, und das würde mich traurig machen. Wenn es viele PRs für 1.x gibt, die ignoriert werden, würde ich hoffen, dass die Betreuer Community-Mitglieder willkommen heißen, die helfen wollen, 1.x zu pflegen. Ohne PRs und Wartung durch die Community ist es schwer, jemandem vorzuwerfen, dass er sich auf seinen aktiven Entwicklungszweig konzentrieren möchte.

Dies geschieht normalerweise, wenn Sie in Arbeitsbereichen eine andere Version desselben npm-Pakets verwenden.

Nehmen wir an, Sie haben die Arbeitsbereiche @scope/www und @scope/api und beide haben das npm-Paket eslint . Aber @scope/www verwendet [email protected] während @scope/api [email protected] . Außerdem haben Sie [email protected] im Stamm packages.json .

Wenn Sie dann versuchen, ein Paket in einem der Arbeitsbereiche zu installieren, erhalten Sie den Fehler error An unexpected error occurred: "expected workspace package to exist for \"eslint\"". . Weil keine Ihrer eslint Versionen identisch ist.

Sobald Sie sie identisch gemacht haben, sollten Sie keine Fehlermeldung erhalten.

Das ist interessant, danke für die zusätzlichen Details @abdullahceylan - Nur neugierig: Wie ist Yarn vor 1.19.2 (kein Fehler) mit dieser Situation umgegangen?

Es gibt mir auch den gleichen Fehler @friederbluemle

Ich hatte dieses Problem, weil ich verschiedene Versionen von @babel/core in meinen Arbeitsbereichen hatte, genau wie @abdullahceylan sagte. Das Aktualisieren von @babel/core auf dieselbe Version hat das Problem für mich gelöst! 🙏

Ich wünschte, es gäbe eine spezifischere Meldung für diesen Fehler.

Hatte auch dieses Problem, konnte es aber lösen:
Der Grund war, dass ich ein Paket (eslint) in einem meiner Pakete und im Root-Workspace hatte. Aus dem Root-Arbeitsbereich entfernt und alles funktionierte wieder.

Ich habe herausgefunden, dass meine Probleme davon kamen, dass @babel/core in nextjs auf 7.7.7 behoben wurde und einige andere Module ^7.10.0 erforderten lösen Sie die Abhängigkeitskonflikte.

Ich habe es mit resolutions gelöst, indem ich es getan habe

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

Und machte ein yarn install / npx lerna bootstrap

In der Anwendung, an der ich arbeite, konnte ich diesen Fehler durch Änderung beheben

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

zu

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

Vielleicht entdeckt yarn versehentlich einen verschachtelten Arbeitsbereich in den node_modules eines meiner Pakete? Ich hatte keine Zeit, mir das anzuschauen. Ich habe Garn 1.22.4 verwendet.

BEARBEITEN: Dies scheint durch die Behauptungen bestätigt zu werden, dass die Konsolidierung von Abhängigkeitsversionen (die sie wiederum aus dem Verzeichnis packages hebt) dieses Problem ebenfalls lösen kann.

was bei mir funktioniert hat ist

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

Sie können hier npx anstelle von yarn

Genauso explodiert yarn add beim Versuch, ein Paket zu erstellen. Bitte beheben 🙏

Plötzlich stoße ich absolut aus heiterem Himmel darauf.

Bearbeiten: Ich hatte ein lokales Paket in meinem Mono-Repository mit dem gleichen Namen wie eine npm-Abhängigkeit, wie von @abdullahceylan erwähnt.

Ich hatte das gleiche Problem mit yarn add . In meinem Fall beschwerte es sich über eslint . Ich habe die Version eslint manuell auf 7.2.0 .
Ich ging meine yarn.lock , um zu überprüfen, welche Abhängigkeiten nach einer anderen Version von eslint fragten (habe gerade das "Suchen"-Tool mit dem eslint Schlüsselwort verwendet).
Mir wurde klar, dass viele Abhängigkeiten die Version 6.8.0 erforderten und versuchten, sie zu installieren.

Ich habe das Problem gelöst, indem ich die eslint Version auf 6.8.0 .
Sie können entweder den Parameter resolutions zu Ihrer Datei package.json hinzufügen. In meinem Fall wäre es so gewesen

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

Hoffe es kann jemandem helfen.

Vielen Dank @dxit , das hilft mir 😄

Hat jemand feststellen können, woran das genau liegt? Wird es in v1 einen Fix geben?

Bei einem Monorepo, das Heben verwendet, stößt man auf dasselbe. Umgehen Sie es mit dem npx-Hack für die Installation von deps.

Angenommen, Sie verwenden Lerna, @mmun , hier für weitere Details.

Ich hatte diesen Fehler mit der folgenden Umgebung:

Node: 10.20.1
Yarn: 1.22.4

Es funktionierte mit der folgenden Einstellung.

Node: 10.15.3
Yarn: 1.13.0

Ich habe versucht, Yarn auf 1.18.0 aber es schien nicht zu funktionieren mit Node 10.20.1

Hinweis an mich selbst: Überprüfen Sie dies, sobald die nächste Version von yarn veröffentlicht wird.

@dkempner Garn 1 wird keine neuen Versionen haben, glaube ich nicht ... Wenn ja, ist es in diesem Repo schrecklich ruhig (nur 1 Commit in den letzten 2 Monaten). Du kannst es mit Garn@ berry versuchen

Nach dem Testen jeder Version beginnt der Fehler in 1.19.2, zumindest für Windows. Also etwas Abwechslung zwischen 1.19.1 - 1.19.2 Pausen

@thefat32 - Ja, das ist richtig. Nicht nur unter Windows. Ich habe diesen Befehl in meinem Verlauf, den ich ziemlich oft als Problemumgehung verwende, wenn ich den Fehler sehe:

npx [email protected] upgrade-interactive

Ich habe das gleiche Problem, wenn ich dem Garnmonorepo eine gewisse Abhängigkeit hinzufüge.

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

Hallo Leute, ich hatte genau das gleiche Problem!

An unexpected error occurred: "expected workspace package to exist for \"@jest-cli"".
Ich hatte dieses Problem, weil ich eine andere Version von jest-cli in meinem Arbeitsbereich hatte. Behoben , indem alle Pakete auf die neueste Version aktualisiert wurden.

@abdullahceylan Wissen Sie, ob das bei _transitiven_ Abhängigkeiten immer noch der Fall ist? Ich habe den gleichen Fehler wie alle anderen, aber in meinem Fall ist die Abhängigkeit nicht meine, daher weiß ich nicht, wie ich sie aktualisieren könnte. Und ändert workspaces.nohoist etwas?

@customcommander TBH Ich bin noch nie auf eine Situation wie deine gestoßen, aber das erste, was ich in einer solchen Situation versuchen würde, wäre, etwas wie "**/pagkage-name" für die Option nohoist .

@customcommander TBH Ich bin noch nie auf eine Situation wie deine gestoßen, aber das erste, was ich in einer solchen Situation versuchen würde, wäre, etwas wie "**/pagkage-name" für die Option nohoist .

Warum?

Erlebe dies derzeit mit lerna

Wir haben dies eingegrenzt und beginnen für uns in v1.19.2

Knoten: v12.13.0
Garn: funktioniert <= v1.19.1
Betriebssystem: macOS 10.15.6

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

yarn policies set-version 1.19.1 arbeitet für uns mit lerna

Das Ändern der Garnrichtlinien in yarn policies set-version 1.18.0 hat auch bei mir funktioniert.
Ich war in:
Garn : 1.22.5
Knoten : 10,21
Betriebssystem : Arch Linux (x64)

Ich habe keine Lösung über die bereits in diesem Thread vorgeschlagenen hinaus, aber es scheint, dass PR https://github.com/yarnpkg/yarn/pull/7289 die Regression eingeführt hat, und insbesondere diese Zeilen .

Die Version dieses Fehlers, die ich erlebt habe, ist besonders verwirrend, da die in der Fehlermeldung angezeigte Abhängigkeit nur im Stammverzeichnis des Arbeitsbereichs installiert wurde und nicht in einem der verschachtelten Arbeitsbereiche.

Ich habe hier ein minimales Repro erstellt: https://github.com/smably/yarn-workspaces-hoisting-bug. In diesem Fall erhielt ich expected workspace package to exist for "pretty-quick" , obwohl pretty-quick nur einmal im Baum vorkommt. Der eigentliche Fehler scheint aufzutreten, wenn Garn versucht, die transitiven Abhängigkeiten von pretty-quick .

Ich habe versucht, in der Garn-Codebasis herumzustöbern, um zu sehen, ob ich das Problem beheben kann, aber einige der Unit-Tests schlagen auf meinem Computer fehl , der console.log oder debugger Anweisungen zum Laufen zu bringen (ich vermute, weil yarn untergeordnete Prozesse erzeugt und sie die --inspect -Knoten nicht erben

In meinem Fall könnte es der Versionskonflikt von @babel/core . Ich habe es gelöst durch: Überprüfen Sie die von yarn why @babel/core installierte Version, fügen Sie dem Paket eine Auflösung hinzu, die nicht dieselbe Version ist, um die Version zu vereinheitlichen.

Dies hinzuzufügen, falls jemand anderes (Gott helfe ihnen) ein ähnliches Problem hat, da ich gerade mein halbes Wochenende damit verbracht habe, meinen Computer zu debuggen / im Grunde neu zu formatieren ...

Ich habe yarn policies set-version 1.19.1 weil ich dachte, alles sei in Ordnung. Ein paar Stunden später habe ich meine Next.js-App erstellt und diese Error occurred prerendering page... . Ich habe buchstäblich alles unter der Sonne ausprobiert und habe gerade festgestellt, dass yarn policies set-version 1.19.1 die Ursache war.

Noch seltsamer ist, dass es mein lokales Projekt zerstört. Wenn ich zu einem stabilen Zweig wechsle, alle Node-Module, Garn.lock usw. lösche, zurück zur neuesten Garn-Version wechsle und yarn install ausführe und dann meine Next.js-App erneut baue, erhalte ich dasselbe Error.

Ich habe keine Ahnung, was los ist tbh. Ich habe Node, Garn usw. buchstäblich neu installiert. Die einzige Lösung bestand darin, die App zu löschen und erneut zu klonen.

Ich hatte das gleiche Problem mit dem Paket eslint . Es stellte sich heraus, dass das Problem darin bestand, dass mein Workspace-Root eslint als Dev-Abhängigkeit hatte, aber ich hatte auch ein Workspace-Paket, das von einem npm-Paket abhängig war, das von einer anderen Version von eslint abhing, was vermutlich den Hebeprozess irgendwie unterbrach. Alles, was ich tat, war sicherzustellen, dass alle Pakete von derselben Version von eslint abhingen und der Fehler war verschwunden.

habe auch dieses Problem. Die Lösung von @export-mike funktioniert als Hotfix, danke

Gibt es hierzu eine offizielle Antwort/Reparatur-Roadmap des Garn-Entwicklerteams?

Meine Lösung war, auf pnpm umzusteigen. Sehr zu empfehlen!

War diese Seite hilfreich?
0 / 5 - 0 Bewertungen