Yarn: Gagal menginstal dependensi di ruang kerja: paket ruang kerja yang diharapkan ada

Dibuat pada 8 Jan 2020  ·  56Komentar  ·  Sumber: yarnpkg/yarn

Apakah Anda ingin meminta fitur atau melaporkan bug ?
Serangga

Apa perilaku saat ini?
yarn install gagal dengan:

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

Kesalahan mulai terjadi setelah memutakhirkan benang ke 1.19 dan masih berlanjut di versi stabil terbaru 1.21.1

Kesalahan serupa dapat diamati pada #7797 dan #7734

Jika perilaku saat ini adalah bug, berikan langkah-langkah untuk mereproduksi.
Kesalahan dapat direproduksi saat menginstal dependensi di https://github.com/callstack/haul

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

Apa perilaku yang diharapkan?

yarn install harus berhasil menginstal dependensi.

Sebutkan versi node.js, benang, dan sistem operasi Anda.

  • Node: 12.14.1 / 13 (dapat direproduksi pada keduanya)
  • benang: 1.21.1
  • OS: macOS 10.15.2

Komentar yang paling membantu

yarn policies set-version 1.18.0 bekerja untuk saya - benang akan secara otomatis beralih ke versi ini hanya untuk proyek! sangat rapi!
https://classic.yarnpkg.com/en/docs/cli/policies/

Semua 56 komentar

Mengalami perilaku yang sama saat mencoba menambahkan ketergantungan ke paket ruang kerja:

yarn workspace @scope/mypackage add npm-package

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

Detail serupa

Yarn version: 
  1.21.1

Node version: 
  10.17.0

Platform: 
  darwin x64

OS
  macOS 10.15.2

Mengalami masalah yang sama dengan 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

Saya menemukan (sementara) solusi dengan menjalankan kebijakan fitur benang di repo saya:

> yarn policies set-version 1.18.0

yang pada dasarnya berarti:

Di bawah tenda, perintah hanya akan mengunduh rilis file tunggal dari repositori GitHub, menyimpannya di dalam proyek Anda (di dalam folder .yarn/releases), lalu akhirnya memperbarui konfigurasi Anda untuk menunjuk ke file baru (menggunakan yarn-path ).

Juga melihat ini di Benang 1.21.1. Saya dapat mereproduksi kesalahan dalam repositori saya ketika menjalankan yarn upgrade-interactive , _but_ secara manual menabrak versi di package.json masih berfungsi dengan baik untuk beberapa alasan.

Mengalami ini juga:

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

Saat mencoba menambahkan ketergantungan yang tidak terkait di dalamnya pada paket ruang kerja saya yarn add @reduxjs/toolkit . Menambahkan dep secara manual ke package.json diikuti dengan yarn tidak berhasil.

Mencoba yarn cache clean , dan menghapus folder yarn.lock & node_modules, tidak ada perubahan.

▶ yarn --version
1.21.1

Kesalahan yang sama di sini:

$ 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

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

Saya telah mengalami masalah yang sama sejak v1.19 .
yarn upgrade-interactive menjadi tidak dapat digunakan; Itu akan gagal untuk menerapkan pembaruan versi.

Setelah memperbarui ke v1.21 saya tidak dapat yarn install lagi. Itu selalu melempar kesalahan ini:

paket ruang kerja yang diharapkan ada untuk ...

Menurunkan versi ke 1.18 memperbaiki kedua masalah.

Saya harus menunjukkan bahwa masalah ini hanya terjadi pada satu proyek, yaitu monorepo yang menggunakan lerna dan yarn workspaces .

Pengalaman yang sama dengan @raspo
Tidak dapat menginstal paket dari baris perintah lagi di ruang kerja saya yang diaktifkan monorepo.

Saya tidak ingin harus menurunkan versi benang karena berasal dari manajer paket saya, jadi saya menggunakan npx sebagai solusi yang buruk.

npx [email protected] add your-deps-here

Dapatkan juga 1,17 hingga 1,22 ini. Tampaknya ada beberapa paket - dimulai dengan istanbul-lib-instrument . Kemudian jest-snapshot lalu cssstyle berulang kali.

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

Saya juga mendapatkan berita regresi ini?

sama di sini, peningkatan interaktif monorepo dan benang di 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

Sebagai solusi sementara gunakan sesuatu yvm dan gunakan versi 1.18.0 . Bekerja untuk saya

yarn policies set-version 1.18.0 bekerja untuk saya - benang akan secara otomatis beralih ke versi ini hanya untuk proyek! sangat rapi!
https://classic.yarnpkg.com/en/docs/cli/policies/

Saya baru saja mengalami masalah yang sama pada monorepo Lerna + Benang (v1.22). Memecahkan pembuatan ulang yarn.lock .

Ini terlihat seperti duplikat #7734.

Mengalami ini untuk @storybook/api. Solusi @nerdyman tampaknya berhasil untuk saya untuk sementara.

Saya tidak ingin harus menurunkan versi benang karena berasal dari manajer paket saya, jadi saya menggunakan npx sebagai solusi yang buruk.

npx [email protected] add your-deps-here

itu bekerja untuk saya

Saya memiliki masalah yang sama dan meskipun menghapus yarn.lock dan menjalankan yarn install (atau yarn workspace some-workspace bla bla bla ) berhasil, masalahnya adalah saya menggunakan versi benang yang lebih baru dibandingkan dengan anggota tim saya .

Jadi solusinya adalah menggunakan yarn policies . Anda pada dasarnya menjalankan yarn policies set-policy dan ini akan mengunduh versi benang stabil terbaru dan menyimpannya di .yarn/ dan juga memperbarui .yarnrc untuk menunjuk ke versi benang yang diunduh. Dengan cara ini Anda dapat memastikan semua orang menggunakan versi benang yang sama dan menghindari masalah semacam ini.

Info lebih lanjut di sini: https://classic.yarnpkg.com/en/docs/cli/policies#toc -policies-set-version

Jadi solusi untuk masalah ini adalah menurunkan yarn , yarn 2.0 akan menyenangkan

@remorses mohon maaf jika saya salah membaca sarkasme dalam balasan Anda. Saya belum melihat ada orang yang mengirimkan PR untuk memperbaikinya di 1.x. Mungkin saja, dalam masalah lain, orang-orang telah mengirimkan perbaikan untuk ini atau bug lain yang telah ditolak, dan itu akan membuat saya sedih. Jika ada banyak PR untuk 1.x yang diabaikan, saya berharap pengelola akan menyambut anggota komunitas yang ingin membantu mempertahankan 1.x. Tanpa PR dan pemeliharaan dari komunitas, sulit untuk menyalahkan siapa pun karena ingin fokus pada cabang pengembangan aktif mereka.

Ini biasanya terjadi jika Anda menggunakan versi berbeda dari paket npm yang sama di ruang kerja.

Katakanlah Anda memiliki @scope/www dan @scope/api workspace dan keduanya memiliki paket eslint npm. Tetapi @scope/www menggunakan [email protected] sedangkan @scope/api menggunakan [email protected] . Juga, Anda memiliki [email protected] di root packages.json .

Kemudian jika Anda mencoba menginstal paket ke salah satu ruang kerja, Anda akan mendapatkan kesalahan error An unexpected error occurred: "expected workspace package to exist for \"eslint\"". . Karena tidak ada versi eslint yang identik.

Setelah Anda membuatnya identik maka Anda seharusnya tidak mendapatkan kesalahan.

Itu menarik, terima kasih atas detail tambahannya @abdullahceylan - Hanya ingin tahu: Bagaimana Benang sebelum 1.19.2 (tidak ada kesalahan) menangani situasi ini?

Itu juga memberikan kesalahan yang sama kepada saya @friederbluemle

Saya mengalami masalah ini karena saya memiliki versi @babel/core di ruang kerja saya, seperti yang dikatakan @abdullahceylan . Memperbarui @babel/core ke versi yang sama memecahkan masalah bagi saya! 🙏

Saya berharap ada pesan yang lebih spesifik untuk kesalahan ini.

Juga punya masalah ini tetapi bisa menyelesaikannya:
Alasannya adalah saya memiliki paket (eslint) di salah satu paket saya dan di ruang kerja root. Menghapusnya dari ruang kerja root dan semuanya berfungsi kembali.

Menemukan bahwa masalah saya berasal dari @babel/core di nextjs diperbaiki pada 7.7.7 dan beberapa modul lain membutuhkan ^7.10.0 jadi itu sebabnya benang menempatkan folder node_module tambahan di dalam paket Anda ke menyelesaikan konflik ketergantungan.

Saya menyelesaikannya menggunakan resolutions dengan melakukan

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

Dan melakukan yarn install / npx lerna bootstrap

Dalam aplikasi yang saya kerjakan, saya dapat mengatasi bug ini dengan mengubah

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

ke

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

Mungkin yarn secara tidak sengaja mendeteksi ruang kerja bersarang di dalam node_modules dari salah satu paket saya? Saya tidak punya waktu untuk memeriksanya. Saya menggunakan benang 1.22.4.

EDIT: Ini tampaknya dikuatkan oleh klaim bahwa mengkonsolidasikan versi ketergantungan (yang pada gilirannya mengeluarkannya dari direktori packages ) juga dapat memecahkan masalah ini.

apa yang berhasil untuk saya adalah

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

anda dapat menggunakan npx alih-alih yarn di sini

Sama di sini yarn add benar-benar meledak saat mencoba melakukan paket apa pun. Mohon perbaiki 🙏

Tiba-tiba berlari ke ini benar-benar tiba-tiba.

Sunting: Saya memiliki paket lokal ke mono-repo saya dengan nama yang sama dengan ketergantungan npm, seperti yang disebutkan oleh @abdullahceylan.

Saya memiliki masalah yang sama dengan yarn add . Dalam kasus saya, itu mengeluh eslint . Saya secara manual mengatur versi eslint ke 7.2.0 .
Saya memeriksa yarn.lock untuk memeriksa dependensi mana yang meminta versi eslint (cukup gunakan alat "Temukan" dengan kata kunci eslint ).
Saya menyadari bahwa banyak dependensi yang membutuhkan versi 6.8.0 dan mereka mencoba untuk menginstalnya.

Saya telah memecahkan masalah pengaturan versi eslint ke 6.8.0 .
Entah Anda dapat memilih untuk menambahkan resolutions parameter untuk Anda package.json berkas. Dalam kasus saya, itu akan seperti

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

Semoga bisa membantu seseorang.

Terima kasih banyak @dxit , itu membantu saya

Adakah yang bisa menentukan apa sebenarnya penyebab ini? Apakah akan ada perbaikan yang disertakan dalam v1?

Mengalami hal yang sama pada monorepo yang menggunakan pengangkat. Mengatasinya dengan peretasan npx untuk menginstal deps.

Dengan asumsi Anda menggunakan Lerna, @mmun , sini untuk lebih jelasnya.

Saya mengalami kesalahan ini dengan lingkungan di bawah ini:

Node: 10.20.1
Yarn: 1.22.4

Itu bekerja dengan pengaturan di bawah ini.

Node: 10.15.3
Yarn: 1.13.0

Saya sudah mencoba mengatur Benang ke 1.18.0 tetapi sepertinya tidak berfungsi dengan Node 10.20.1

Catatan untuk diri sendiri: lihat kembali ini setelah versi yarn dirilis.

@dkempner yarn 1 saya rasa tidak akan memiliki versi baru... Jika ya, sangat sepi dalam repo ini (hanya 1 komit dalam 2 bulan terakhir). Anda dapat mencoba dengan yarn@berry tho

Setelah menguji setiap rilis, bug dimulai di 1.19.2, setidaknya untuk Windows. Jadi beberapa perubahan antara terobosan 1.19.1 - 1.19.2

@thefat32 - Yup, itu benar. Tidak hanya di Windows. Saya memiliki perintah ini dalam riwayat saya yang cukup sering saya gunakan sebagai solusi setiap kali saya melihat kesalahan:

npx [email protected] upgrade-interactive

Saya memiliki masalah yang sama ketika menambahkan beberapa ketergantungan ke benang monorepo.

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

Hai teman-teman, saya memiliki masalah yang sama persis!

An unexpected error occurred: "expected workspace package to exist for \"@jest-cli"".
Saya mengalami masalah ini karena saya memiliki versi jest-cli yang berbeda di ruang kerja saya. Mengatasinya dengan memutakhirkan semua paket ke versi terbaru.

@abdullahceylan Apakah Anda tahu apakah itu masih terjadi dengan dependensi _transitif_? Saya mengalami kegagalan yang sama seperti orang lain tetapi dalam kasus saya ketergantungannya bukan milik saya jadi saya tidak tahu bagaimana saya bisa memutakhirkannya. Dan apakah workspaces.nohoist mengubah sesuatu?

@customcommander TBH Saya belum pernah mengalami situasi seperti Anda, tetapi hal pertama yang akan saya coba dalam situasi seperti itu adalah menggunakan sesuatu seperti "**/pagkage-name" untuk opsi nohoist .

@customcommander TBH Saya belum pernah mengalami situasi seperti Anda, tetapi hal pertama yang akan saya coba dalam situasi seperti itu adalah menggunakan sesuatu seperti "**/pagkage-name" untuk opsi nohoist .

mengapa?

Saat ini mengalami ini dengan lerna

Kami telah mempersempit ini untuk mulai terjadi pada kami di v1.19.2

Simpul: v12.13.0
benang: bekerja <= v1.19.1
OS: macOS 10.15.6

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

yarn policies set-version 1.19.1 bekerja untuk kita dengan lerna

Ubah kebijakan benang menjadi yarn policies set-version 1.18.0 bekerja untuk saya juga.
Aku berada di:
Benang : 1.22.5
Node : 10.21
OS : ArchLinux (x64)

Saya tidak memiliki solusi di luar yang sudah disarankan di utas ini, tetapi tampaknya PR https://github.com/yarnpkg/yarn/pull/7289 adalah tempat regresi diperkenalkan, dan khususnya, baris ini .

Versi bug yang saya alami ini sangat membingungkan karena ketergantungan yang ditunjukkan pada pesan kesalahan hanya dipasang di root ruang kerja, dan bukan di ruang kerja bersarang mana pun.

Saya membuat repro minimal di sini: https://github.com/smably/yarn-workspaces-hoisting-bug. Dalam hal ini, saya mendapatkan expected workspace package to exist for "pretty-quick" meskipun pretty-quick hanya muncul sekali di pohon. Kesalahan sebenarnya tampaknya terjadi ketika benang mencoba untuk mengangkat dependensi transitif dari pretty-quick .

Saya mencoba mengaduk-aduk basis kode benang untuk melihat apakah saya dapat memperbaiki masalah ini, tetapi beberapa unit test gagal pada mesin saya, tautan "berkontribusi" di README rusak, dan saya memiliki banyak masalah dalam men-debug karena saya tidak bisa membuat pernyataan console.log atau debugger berfungsi (saya menduga karena yarn memunculkan proses anak dan mereka tidak mewarisi --inspect node

Dalam kasus saya, itu mungkin versi konflik dari @babel/core . Saya menyelesaikannya dengan: periksa versi yang diinstal oleh yarn why @babel/core , tambahkan resolusi ke paket yang bukan versi yang sama untuk menyatukan versi.

Menambahkan ini memetikan orang lain (tuhan tolong mereka) memiliki masalah yang sama karena saya baru saja menghabiskan setengah akhir pekan saya debugging / pada dasarnya memformat ulang komputer saya ...

Saya mengatur yarn policies set-version 1.19.1 berpikir semuanya baik-baik saja. Beberapa jam kemudian saya membuat aplikasi Next.js saya dan mendapatkan Error occurred prerendering page... . Saya benar-benar mencoba segalanya di bawah matahari, dan baru menyadari bahwa melakukan yarn policies set-version 1.19.1 adalah penyebabnya.

Yang lebih aneh lagi adalah menghancurkan proyek lokal saya. Jika saya beralih ke cabang yang stabil, hapus semua modul simpul, yarn.lock dll dll, beralih kembali ke benang versi terbaru, dan jalankan yarn install , lalu buat aplikasi Next.js saya lagi, saya mendapatkan yang sama kesalahan.

Saya tidak tahu apa yang terjadi tbh. Saya benar-benar menginstal ulang node, yarn dll. Satu-satunya solusi adalah menghapus aplikasi dan mengkloningnya lagi.

Saya memiliki masalah yang sama dengan paket eslint . Ternyata masalahnya adalah root ruang kerja saya memiliki eslint sebagai ketergantungan dev, tetapi saya juga memiliki paket ruang kerja yang bergantung pada paket npm yang bergantung pada versi eslint yang berbeda, yang saya asumsikan akhirnya merusak proses pengangkatan. Yang saya lakukan hanyalah memastikan semua paket bergantung pada versi eslint yang sama dan kesalahannya hilang.

juga mengalami masalah ini. Solusi @export-mike berfungsi sebagai perbaikan terbaru, terima kasih

Apakah ada tanggapan resmi/peta jalan perbaikan dari tim yarn dev tentang ini?

Solusi saya adalah beralih ke pnpm. Sangat merekomendasikannya!

Apakah halaman ini membantu?
0 / 5 - 0 peringkat