<p>instalasi benang gagal dengan `ENOENT: tidak ada file atau direktori seperti itu sesekali</p>

Dibuat pada 4 Feb 2017  ·  173Komentar  ·  Sumber: yarnpkg/yarn

Menjalankan yarn install sebagai bagian dari langkah pembuatan gambar Docker berdasarkan node:7 gagal pada Travis CI dengan kesalahan ENOTEMPTY , EEXISTS . Tampaknya selalu ada kesalahan pada paket webdriverio .

yarn install v0.19.1
[1/4] Resolving packages...
[2/4] Fetching packages...
error An unexpected error occurred: "https://registry.yarnpkg.com/webdriverio/-/webdriverio-4.6.2.tgz: ENOENT: no such file or directory, open '/usr/local/share/.cache/yarn/npm-webdriverio-4.6.2-dd095ee618896a21c8f1b9d4278736d85a64ca0f/lib/protocol/timeouts.js'".

Ketika Travis menjalankan yarn install sebagai bagian dari fase penginstalan, ia bekerja dengan baik . Kesalahan hanya terjadi saat membuat image Docker.

Repo yang mereproduksi masalah ini.

simpul: 7
OS: Docker + Travis CI
benang: 0.19.1
package.json
benang. kunci

Saya telah mencoba menginstal benang dengan npm install -g dan dengan apt dan kedua metode menyebabkan kegagalan pada Travis.

Cukup aneh, image berhasil dibangun di mesin lokal saya yang menjalankan Ubuntu 16.04.1 LTS dengan versi Docker 1.13.0, build 49bf474.

cat-bug

Komentar yang paling membantu

@bestander dengan --network-concurrency 1 bug tidak muncul (sementara tanpa itu, muncul setiap saat).
Tetapi apa nilai default dari parameter ini? Apa pun nilai yang saya pilih untuk itu (1, 2, 4, 8), itu berhasil, sementara jika saya tidak memasukkannya sama sekali, gagal…

Semua 173 komentar

Menarik, jadi ini hanya gagal di Travis, tetapi berfungsi saat menguji secara lokal? Itu sangat aneh mengingat Docker seharusnya memastikan lingkungannya konsisten.

@ Daniel15 aku tahu benar ...

Saya telah menurunkan node ke versi 6 dan masih gagal di Travis. Saya telah menambahkan bendera --verbose ke yarn install dan yang saya dapatkan hanyalah

verbose Performing "GET" request to "https://registry.yarnpkg.com/spawn-wrap/-/spawn-wrap-1.3.4.tgz".
verbose Performing "GET" request to "https://registry.yarnpkg.com/yargs/-/yargs-6.6.0.tgz".
verbose Performing "GET" request to "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-4.2.1.tgz".
verbose Performing "GET" request to "https://registry.yarnpkg.com/fibers/-/fibers-1.0.15.tgz".
verbose Performing "GET" request to "https://registry.yarnpkg.com/selenium-standalone/-/selenium-standalone-5.11.2.tgz".
verbose Performing "GET" request to "https://registry.yarnpkg.com/tcp-port-used/-/tcp-port-used-0.1.2.tgz".
verbose Performing "GET" request to "https://registry.yarnpkg.com/babel-runtime/-/babel-runtime-5.8.38.tgz".
verbose Error: ENOTEMPTY: directory not empty, rmdir '/usr/local/share/.cache/yarn/npm-webdriverio-4.6.2-dd095ee618896a21c8f1b9d4278736d85a64ca0f/lib/protocol'
    at Error (native)
error An unexpected error occurred: "ENOTEMPTY: directory not empty, rmdir '/usr/local/share/.cache/yarn/npm-webdriverio-4.6.2-dd095ee618896a21c8f1b9d4278736d85a64ca0f/lib/protocol'".

Saya terbuka untuk ide tentang cara men-debug ini.

Menurunkan kualitas ke benang 0.18.1 sepertinya memperbaiki ini untuk saya. Sepertinya 0,19 mungkin memiliki regresi; lihat # 1834

Saya juga memiliki masalah ini dengan benang 0.23.3, ini terjadi bukan saat membangun gambar tetapi hanya saat menjalankan beberapa CI.
Kesalahannya adalah sebagai berikut:

$ time yarn --frozen-lockfile
yarn install v0.20.3
[1/4] Resolving packages...
[2/4] Fetching packages...
error An unexpected error occurred: "ENOTEMPTY: directory not empty, rmdir '/builds/linagora/petals-cockpit/yarncache/npm-@angular/core-4.0.0-beta.8-8d9c8a64e7c26ff7208404e716deea94bb509cd7/src'".
info If you think this is a bug, please open a bug report with the information provided in "/builds/linagora/petals-cockpit/frontend/yarn-error.log".
info Visit https://yarnpkg.com/en/docs/cli/install for documentation about this command.

real    0m9.812s
user    0m7.596s
sys 0m0.932s

Saya rasa mungkin ada cara aneh untuk menghapus file…

Poin penting: cache kosong!

Dan di komputer saya, jika saya mencoba melakukan repro, saya mendapatkan ini:

yarn install v0.20.3
[1/4] Resolving packages...
[2/4] Fetching packages...
error An unexpected error occurred: "http://docker0.gso.lan:8081/repository/npm/@angular/core/-/core-4.0.0-beta.8.tgz: EEXIST: file already exists, mkdir '/home/vnoel/.cache/yarn/npm-@angular/core-4.0.0-beta.8-8d9c8a64e7c26ff7208404e716deea94bb509cd7/src/metadata'".
info If you think this is a bug, please open a bug report with the information provided in "/home/vnoel/Linagora/Petals/dev/git/petals-cockpit-new/frontend/yarn-error.log".
info Visit https://yarnpkg.com/en/docs/cli/install for documentation about this command.

Dan dengan benang 0.21.2:

yarn install v0.21.2
[1/4] Resolving packages...
[2/4] Fetching packages...
error An unexpected error occurred: "http://docker0.gso.lan:8081/repository/npm/@angular/core/-/core-4.0.0-beta.8.tgz: ENOENT: no such file or directory, lstat '/home/vnoel/.cache/yarn/npm-@angular/core-4.0.0-beta.8-8d9c8a64e7c26ff7208404e716deea94bb509cd7/bundles/core.umd.js'".
info If you think this is a bug, please open a bug report with the information provided in "/home/vnoel/Linagora/Petals/dev/git/petals-cockpit-new/frontend/yarn-error.log".
info Visit https://yarnpkg.com/en/docs/cli/install for documentation about this command.

Itu buruk!

Dan saya setuju dengan @twooster sekitar 0.18.1 berfungsi dengan baik!

@ Daniel15 itu tidak bekerja secara lokal juga. Sebenarnya, ini TIDAK PERNAH berfungsi saat cache kosong untuk saya!

@victornoel kesalahan terbaru bisa jadi https://github.com/yarnpkg/yarn/issues/2714

@bestander Saya sudah mencoba 0.19.1 pada saat itu dan tidak berhasil…

Saya mencoba lagi, dan sekarang bugnya:

  • tidak muncul dengan cache kosong, tetapi muncul dalam kasus berikut (Saya sangat berharap ini dapat direproduksi…):

    • rm -rf cache benang

    • klon https://gitlab.com/linagora/petals-cockpit.git

    • checkout 5f31ccb4b2357201baa50539b30702cffceb6992

    • jalankan benang di direktori frontend

    • master checkout

    • jalankan benang lagi di direktori frontend

    • Saya mendapatkan: error An unexpected error occurred: "http://docker0.gso.lan:8081/repository/npm/@angular/core/-/core-4.0.0-rc.1.tgz: ENOENT: no such file or directory, utime '/home/vnoel/.cache/yarn/npm-@angular/core-4.0.0-rc.1-7f87b7696b407476e45d6d3c1880a50d5afbb6e3/@angular/core/testing.js'". (Saya menggunakan registri saya sendiri, tetapi hal yang sama terjadi tanpanya)

  • muncul dengan benang 0.21.2, 0.19.1 tetapi tidak dengan 0.18.2

Jadi menurut saya itu tidak sama, semoga Anda dapat mereproduksinya setidaknya…

(sebenarnya, saya baru saja mencoba dan mereproduksi bug dengan cache dan benang kosong 0.21.2 sementara itu tidak terjadi sebelumnya, mungkin ada file lain di tempat lain yang menjadi sumber masalah ini, dan itu tidak ada di cache?)

@bestander Saya masih akan menguji benang segera setelah # 2744 tersedia sebagai bangunan malam :)

Ping saya jika saya bisa membantu.
Tindakan terbaik adalah mengirim PR dengan tes e2e yang rusak (dan dilewati).

@bestander baik, tidak, saya masih mendapatkan kesalahan seperti:


➜  frontend git:(master) ✗ yarn
yarn install v0.22.0-20170227.1509
[1/4] Resolving packages...
[2/4] Fetching packages...
error An unexpected error occurred: "https://registry.yarnpkg.com/@angular/core/-/core-4.0.0-rc.1.tgz: ENOENT: no such file or directory, lstat '/home/vnoel/.cache/yarn/npm-@angular/core-4.0.0-rc.1-7f87b7696b407476e45d6d3c1880a50d5afbb6e3/typings/src/facade/lang.d.ts'".

atau:

➜  frontend git:(master) ✗ yarn
yarn install v0.22.0-20170227.1509
[1/4] Resolving packages...
[2/4] Fetching packages...
error An unexpected error occurred: "https://registry.yarnpkg.com/typescript/-/typescript-2.2.1.tgz: ENOENT: no such file or directory, lstat '/home/vnoel/.cache/yarn/npm-typescript-2.2.1-4862b662b988a4c8ff691cc7969622d24db76ae9/lib/typescriptServices.js'".

Saya akan melihat apakah saya bisa melakukan tes e2e.

@ Bestander pula saya bisa mendapatkan stacktrace lengkap dari kesalahan?

Saya hanya melihat ini di thread-error.log:

Trace: 
  Error: http://docker0.gso.lan:8081/repository/npm/@angular/core/-/core-4.0.0-rc.1.tgz: ENOENT: no such file or directory, lstat '/home/vnoel/.cache/yarn/npm-@angular/core-4.0.0-rc.1-7f87b7696b407476e45d6d3c1880a50d5afbb6e3/@angular/core.es5.js'
      at Error (native)

Itu agak tidak berguna :)

kesalahan yang dirinci adalah:

{ Error: http://docker0.gso.lan:8081/repository/npm/@angular/core/-/core-4.0.0-rc.1.tgz: ENOENT: no such file or directory, lstat '/home/vnoel/.cache/yarn/npm-@angular/core-4.0.0-rc.1-7f87b7696b407476e45d6d3c1880a50d5afbb6e3/@angular/core.js'
    at Error (native)
  errno: -2,
  code: 'ENOENT',
  syscall: 'lstat',
  path: '/home/vnoel/.cache/yarn/npm-@angular/core-4.0.0-rc.1-7f87b7696b407476e45d6d3c1880a50d5afbb6e3/@angular/core.js',
  fstream_type: 'File',
  fstream_path: '/home/vnoel/.cache/yarn/npm-@angular/core-4.0.0-rc.1-7f87b7696b407476e45d6d3c1880a50d5afbb6e3/@angular/core.js',
  fstream_class: 'FileWriter',
  fstream_stack: 
   [ '/home/vnoel/Linagora/Petals/dev/git/yarn/node_modules/fstream/lib/writer.js:285:28',
     '/home/vnoel/Linagora/Petals/dev/git/yarn/node_modules/graceful-fs/polyfills.js:284:29',
     'FSReqWrap.oncomplete (fs.js:123:15)' ] }

Tidak yakin apa yang harus dilakukan dengan ini… terjadi pada package-fetcher.js , tepatnya baris 56, saya kesulitan menemukan sumbernya…

Kelihatannya bodoh, tapi saya merasa gagal hanya ketika mirror npm jaringan saya (nexus sonatype di perusahaan saya) telah mencerminkan artefak @angular/core . Jika belum, semuanya berjalan dengan baik dan kemudian gagal pada artefak lain yang sudah dicerminkan ( typescript dalam kasus ini).

Jika saya menghapus artefak dari cermin nexus dengan tangan, itu berhasil!

Jadi… ini seperti benang tidak bisa mengimbangi jika sesuatu tiba terlalu cepat ^^ karena ketika saya menggunakan registri npm normal tanpa menggunakan cermin saya, biasanya semuanya berjalan dengan baik (kami memiliki koneksi internet yang lambat).
Dan itu akan menjelaskan mengapa sering gagal pada sistem CI karena biasanya memiliki koneksi internet yang sangat cepat…

Itu agak sulit untuk menyimpulkan itu, tetapi itu bisa membantu menemukan asal mula masalahnya.
WDYT @bestander?

Sebagai catatan, saya pikir kesalahan berasal dari tar.Extract langkah di pipa pengambilan, tapi saya tidak sepenuhnya yakin ^^

Terima kasih telah meneliti lebih lanjut, @victornoel , Anda mungkin menemukan sesuatu di sini.

Saya dapat merepro skenario dari https://github.com/yarnpkg/yarn/issues/2629#issuecomment -282745896.
Melihat ke dalamnya.

saya mendapat

error An unexpected error occurred: "https://registry.yarnpkg.com/typescript/-/typescript-2.2.1.tgz: ENOENT: no such file or directory, lstat '/Users/bestander/Library/Caches/Yarn/npm-typescript-2.2.1-4862b662b988a4c8ff691cc7969622d24db76ae9/lib/typescriptServices.js'".

Namun jika saya hanya mencoba yarn install lagi dan lagi pada akhirnya akan menyelesaikan instalasi.
Sepertinya meledak file .tgz diakhiri dengan kesalahan.

Memperbarui:

  • .tgz tampaknya baik-baik saja, saya dapat mengekstrak secara manual salah satu yang gagal selama fase pengambilan
  • Saya bertanya-tanya jika tar package memunculkan kesalahan ini karena beberapa alasan, mungkinkah itu konkurensi?

Beberapa bantuan untuk menyelidiki mengapa melepaskan beberapa dependensi tersebut (dalam kasus saya, skrip ketikan dan inti sudut) menyebabkan kesalahan diterima.
Concurrency? Bug di https://github.com/npm/node-tar?

@victornoel , dapatkah Anda mereproduksi bug dengan yarn install --network-concurrency 1 ?

@bestander dengan --network-concurrency 1 bug tidak muncul (sementara tanpa itu, muncul setiap saat).
Tetapi apa nilai default dari parameter ini? Apa pun nilai yang saya pilih untuk itu (1, 2, 4, 8), itu berhasil, sementara jika saya tidak memasukkannya sama sekali, gagal…

Standarnya adalah 15, saya dapat melakukan repro masalah dengan konkurensi 15 dengan pembayaran bersih https://gitlab.com/linagora/petals-cockpit.git#075bac4c54fee466568c000c7ffe8025f593e212 .

Berita bagus! Selangkah lebih maju menuju solusi DAN solusi :)

Beberapa hasil.

TL; DR Saya kehabisan ide bagaimana memperbaikinya dengan benar untuk selamanya, ini membutuhkan pengetahuan Node.js yang lebih dalam.

  1. Jaringan dapat dihilangkan dari kemungkinan masalah.
    Saya telah menyiapkan mirror offline untuk file .tgz di yarn.lock dan dapat mereproduksi masalah dengan paket yang diinstal dari disk.

Masalahnya ada pada aliran unzip / untar dalam kode tarball-fetcher.

  1. Saya mencoba pustaka lain yang mengekstrak tar - https://github.com/mafintosh/tar-fs vs https://github.com/npm/node-tar/ saat ini
    Sedikit lebih dalam - pengecualian terjadi di node saat melakukan beberapa operasi mkdirp
Error: ENOENT: no such file or directory, chmod '/Users/bestander/Library/Caches/Yarn/npm-@angular/core-4.0.0-rc.1-7f87b7696b407476e45d6d3c1880a50d5afbb6e3/typings/src/di/injector.d.ts'
  errno: -2,
  code: 'ENOENT',
  syscall: 'chmod',
  path: '/Users/bestander/Library/Caches/Yarn/npm-@angular/core-4.0.0-rc.1-7f87b7696b407476e45d6d3c1880a50d5afbb6e3/typings/src/di/injector.d.ts' }

Saya pikir core-4.0.0 dan typescript-2.2.1 gagal karena mereka memiliki cukup banyak file dan struktur folder yang dalam, dan mereka gagal untuk menginstal saat membuat banyak operasi mkdir / copy secara bersamaan.

Setiap kali ada syscall berbeda yang gagal: chmod, rmdir, mkdir, lstat, utime.

Dan itu bukanlah sesuatu yang jelas dalam kode perpustakaan.

  1. Gagal sama pada Node 4, 6 dan 7.

  2. Saya tidak dapat mereproduksi kesalahan dengan konkurensi yang disetel ke 8, jadi saya akan mengirim PR untuk mengurangi konkurensi jaringan default.


  1. Saya bertanya-tanya bagaimana konkurensi memengaruhi kecepatan pemasangan.

5.1. Menggunakan offline-mirror (tanpa mengunduh), di MBPro 13 "saya, bersihkan cache dan gunakan node-tar untuk mengekstrak file.
Concurrency 12 - gagal
Concurrency 8 - 18 detik
Concurrency 4 - 18 detik
Konkurensi 2 - 21 detik

5.2. Menggunakan offline-mirror (tanpa mengunduh), di MBPro 13 "saya, bersihkan cache dan gunakan tar-fs untuk membuka zip file.
Konkurensi 12 - 15 detik
Concurrency 8 - 15 detik
Concurrency 4 - 17 detik
Concurrency 2 - 18 detik

5.3. Mengunduh paket dari internet, di MBPro 13 "saya, membersihkan cache dan menggunakan tar-fs untuk membuka zip file.
Konkurensi 12 - gagal sekali
Concurrency 8 - 21 detik
Concurrency 4 - 23 detik
Concurrency 2 - 34 detik

Sepertinya menyetel konkurensi ke 8 cukup aman, juga masuk akal untuk mengganti pustaka tar.
Saya akan menindaklanjuti dengan PR.

Cara yang tepat untuk memperbaikinya adalah dengan melakukan forking https://github.com/mafintosh/tar-fs dan melakukan operasi fs yang lebih cerdas, misalnya menggunakan mkdir untuk setiap folder hanya sekali

tar-fs maintainer tampaknya aktif, mungkin kita bisa membuka masalah di sana dan melihat apa yang mereka ketahui / usulkan tentang ini?

@victornoel ,

@bestander selesai! mafintosh / tar-fs # 61 :)

Saya menemukan pesan kesalahan ini dalam skenario yang agak mirip ketika menguji yarn pada agen pembuatan jenkins saya.

Tahukah Anda apa saja kondisi yang diperlukan untuk memicu bug ini? Saya ingin mengganti saya membangun sistem npm panggilan dengan yarn untuk kecepatan, tetapi jika aku harus concurrency menonaktifkan Saya khawatir itu mungkin meniadakan bonus di sana.

@ProdigySim , seperti yang dijelaskan di # 2829 (yang digabungkan dalam master benang), mengurangi konkurensi jaringan tidak berpengaruh besar pada kinerja benang. Anda cukup mengaturnya menjadi 8 dan seharusnya baik-baik saja. Bagaimanapun, bahkan ketika mengunduh 8 dependensi sekaligus, saya tidak yakin sebagian besar drive akan mengikuti throughput sehingga Anda tidak akan kehilangan banyak pasti :)

@victornoel Terima kasih atas informasinya. Saya tidak yakin hanya mengurangi --network-concurrency akan cukup dalam kasus saya, karena kita juga akan menjalankan beberapa contoh benang secara paralel.

Saya dapat melakukan repro masalah ini bahkan dengan --network-concurrency 1 , tetapi mungkin saya harus membuka edisi terpisah untuk itu?

Menggunakan repo tes yang sama dengan yang Anda berikan di atas:

#!/bin/bash
set -x # echo commands

# Clear yarn cache
rm -rf $(yarn cache dir)

# Clone the repo into two separate spots
git clone https://gitlab.com/linagora/petals-cockpit.git repo1
git clone https://gitlab.com/linagora/petals-cockpit.git repo2

# Run yarn on both in parallel
cd repo1/frontend && yarn --network-concurrency 1 &
cd repo2/frontend && yarn --network-concurrency 1 &

Ini membuat saya kesalahan setiap kali (sejauh ini 4 untuk 4)

error An unexpected error occurred: "https://registry.yarnpkg.com/@angular/core/-/core-4.0.0-rc.2.tgz: 
ENOENT: no such file or directory, lstat '/Users/<snip>/Library/Caches/Yarn/npm-@angular/core-4.0.0-rc.2-59535050e5d0e6141417186eee571296f8e9c3d0/@angular/core.es5.js'".

Pada benang 0.21.3, node v4.5.0, OSX 10.11.6

Sejauh ini saya dapat mengatasi masalah ini dengan hanya memasukkan benang pada pekerjaan pembuatan yang tidak akan pernah berjalan secara paralel, atau menggunakan set paket yang sama sekali berbeda, tetapi bahkan kemudian saya tidak yakin itu akan aman - maka bertanya tentang kondisi root untuk bug ini.

@Prodigy
Ini adalah masalah terpisah, tetapi terkait, yang disebabkan oleh cache unduhan global Yarn. Solusinya adalah membuat cache yang berbeda untuk setiap direktori.

Anda masih dapat menjalankan dengan --network-concurrency 8 . (Saya sebenarnya tidak memiliki masalah dengan konkurensi jaringan tidak terbatas.)

Lebih banyak konteks di sini .

@bestander mengejutkan, hari ini, masalah muncul kembali (dipicu oleh tar untuk versi baru angular ^^) bahkan dengan konkurensi jaringan pada 8, tetapi hanya pada CI saya ... Saya memindahkannya ke 2 dan berhasil (dan saya tidak ' Anda tidak terlalu peduli jika perlu beberapa detik lagi untuk mengunduh dependensi, jadi tidak apa-apa untuk saat ini).
Kami sepertinya tidak mendapatkan umpan balik dari proyek tar-fs… siapa lagi yang bisa kami hubungi untuk bantuan tentang itu?

mengalami masalah ini juga di Travis build untuk OS X. Saya telah membersihkan cache dan mengatur konkurensi jaringan tetapi tidak ada yang membantu.

@kevingelion, ke nilai mana Anda menyetel konkurensi jaringan? menjadi drastis dan atur sesuatu seperti 2 untuk melihat apakah masalahnya adalah yang ini :)

@victornoel saya setel ke 1 dan 2, dan kedua opsi tersebut gagal. Saya menggunakan yarn --mutex network dan tidak ada dadu juga.

@bestander perbaikan peretasan berikut (edit: BUKAN) masalah:

diff --git a/src/util/request-manager.js b/src/util/request-manager.js
index e0e134a2..995dac69 100644
--- a/src/util/request-manager.js
+++ b/src/util/request-manager.js
@@ -214,8 +214,7 @@ export default class RequestManager {
     }, params.headers);

     const promise = new Promise((resolve, reject) => {
-      this.queue.push({params, resolve, reject});
-      this.shiftQueue();
+      this.execute({params, resolve, reject});
     });

     // we can't cache a request with a processor

Jelas ini bukan perbaikan, ini sepenuhnya melewati manajer permintaan dan sistem antriannya, tetapi ini menunjukkan bahwa masalahnya berasal dari subsistem ini.

Terima kasih, Victor!

Pada 24 Maret 2017 pukul 18:07, Victor Noël [email protected] menulis:

@bestander https://github.com/bestander , peretasan berikut memperbaiki
masalah:

diff --git a / src / util / request-manager.js b / src / util / request-manager.js
indeks e0e134a2..995dac69 100644
--- a / src / util / request-manager.js
+++ b / src / util / request-manager.js
@@ -214,8 +214,7 @@ ekspor kelas default RequestManager {
}, params.headers);

 const promise = new Promise((resolve, reject) => {

  • this.queue.push ({params, resolusinya, tolak});
  • this.shiftQueue ();
  • this.execute ({params, menyelesaikan, menolak});
    });
 // we can't cache a request with a processor

Jelas ini bukan perbaikan, itu sepenuhnya melewati manajer permintaan dan
sistem antriannya, tetapi itu menunjukkan bahwa masalahnya berasal dari ini
subsistem.

-
Anda menerima ini karena Anda disebutkan.
Balas email ini secara langsung, lihat di GitHub
https://github.com/yarnpkg/yarn/issues/2629#issuecomment-289102067 , atau nonaktifkan
utasnya
https://github.com/notifications/unsubscribe-auth/ACBdWF66L-NzAInx7Bhs6V7s7LKahxxUks5rpAZ1gaJpZM4L3JbX
.

whoups tidak, tidak: D tetapi itu meningkatkan sedikit

Maaf atas kesalahan positif, saya terlalu bersemangat untuk melaporkan temuan saya :)

Itu mengubah banyak hal karena sebelumnya saya dapat menjalankan benang berkali-kali dan tidak akan pernah berhasil mengunduh dependensi inti-sudut atau skrip ketikan (selalu yang ini), tetapi di sana gagal pertama kali, dan berhasil untuk kedua kalinya, dan saya lupa menghapus cache di antara percobaan saya jadi saya pikir itu berhasil.

Yah itu tergantung, sekarang kadang berhasil, kadang tidak (dengan hack, jadi tidak ketinggalan total atau koneksi internet saya terlalu lambat sekarang ...)

Saya mengalami ini juga di CI build kami. Setelah banyak pengujian, akhirnya saya juga bisa mereproduksi secara lokal.

Sekali lagi, terkadang berhasil, tetapi sering gagal dengan salah satu kesalahan berikut (yang membuatnya tampak seperti ada semacam kondisi balapan di suatu tempat):

  • ENOENT: no such file or directory, lstat 'cache/directory/some-file'
  • EEXIST: file already exists, mkdir 'package-name'

Saya telah mengisolasinya ke satu paket yang kami instal langsung dari repositori pribadi di GitHub. Yang cukup menarik, paket yang direferensikan dalam pesan kesalahan selalu merupakan ketergantungan dari paket ini (dan itu selalu merupakan paket lain yang kami instal langsung dari GitHub, meskipun bukan repositori pribadi). Jadi sepertinya satu kasus repro sedang menginstal paket dari URL GitHub pribadi yang memiliki subdependensi yang juga diinstal dari repositori GitHub (tidak harus pribadi).

Tidak yakin apakah ini membantu sama sekali ... Saya akan dengan senang hati mencoba membantu sebisa saya!

Sunting: Tidak yakin apakah ini membantu atau tidak, tetapi paket tingkat atas terdaftar dalam format "git+ssh://[email protected]/org/package.git#v1.0.0" , dan dalam kesalahan, sub-ketergantungan yang sedang diunduh tampak seperti diunduh lebih dari https dengan url "https://codeload.github.com/org/package/tar.gz/ljasdf08i234098aifj" .

Saya menyelidiki ini lebih banyak.
Mencoba membangun skrip mandiri untuk ekstrak tar-fs bersamaan tetapi saya cenderung berpikir bahwa masalahnya ada pada file tar yang rusak selama pengunduhan.

Ketemu, Doh.

Dalam contoh dari https://github.com/yarnpkg/yarn/issues/2629#issuecomment -282745896 Yarn memiliki paket duplikat yang diunduh dan diekstrak secara paralel.
Yang digandakan adalah @angular/core/-/core-4.0.0-rc.1 dan typescript/-/typescript-2.2.1.tgz .

Dengan konkurensi tinggi, kami kebetulan melakukan ekstraksi bersamaan ke folder cache yang sama.
Saya akan menyelidiki mengapa Yarn tidak menghapus duplikat kedua paket itu dan mengirim perbaikan.

Tidak ada keajaiban pada OS atau tingkat ekstraksi tar.

haha, kerja bagus @bestander , senang akhirnya kami menemukan masalahnya!

Kerja yang luar biasa @bestander : tada :! Menemukan https://github.com/yarnpkg/yarn/pull/3090 dan https://github.com/yarnpkg/yarn/pull/3106 adalah yang memblokir kami untuk menggunakan Yarn.

Terima kasih!

Saya mengalami masalah ini saat menginstal modul prop-types. Setiap kali saya mencoba untuk menginstalnya akan ENOENT pada nama file yang berbeda. Bagi saya masalahnya hilang setelah menginstal npm 5.0.2

$ yarn add prop-types
yarn add v0.21.3
[1/4] Resolving packages...
[2/4] Fetching packages...
error An unexpected error occurred: "https://registry.yarnpkg.com/prop-types/-/prop-types-15.5.10.tgz: ENOENT: no such file or directory
....

$ npm -g install npm

# whoops, looks like npm installed itself to different location than apt-get did
$ npm -v 
3.5.2

# remove the cached link from shell so the right version can surface
$ hash -d npm
$ npm -v
5.0.2

$ yarn add prop-types
... properly installs prop-types as expected

@skylize Itu mungkin kebetulan - Yarn tidak menggunakan klien npm sama sekali, jadi versi npm tidak mempengaruhi eksekusi Yarn sama sekali.

Hal ini menyebabkan build Travis saya gagal hampir setiap saat, dengan beberapa paket berbeda. Apakah sudah ada solusi?
error An unexpected error occurred: "https://registry.yarnpkg.com/apollo-client/-/apollo-client-1.8.0.tgz: ENOENT: no such file or directory, utime '/var/lib/jenkins/.cache/yarn/v1/npm-apollo-client-1.8.0-3b5d1976a06a0f82b2fc66fe71754868193dadb9/flow-typed/npm/webpack_vx.x.x.js'".

@Redme
Sama di sini, tetapi ini berfungsi:

yarn install --network-concurrency 1

Versi mana yang Anda gunakan? Ini dimaksudkan untuk diperbaiki sudah ...

Le 8 août 2017 6:37 PM, "Ben Merckx" [email protected] écrit:

@Redmega https://github.com/redmega
Sama di sini, tetapi ini berfungsi:

pemasangan benang --network-concurrency 1

-
Anda menerima ini karena Anda disebutkan.
Balas email ini secara langsung, lihat di GitHub
https://github.com/yarnpkg/yarn/issues/2629#issuecomment-321011749 , atau nonaktifkan
utasnya
https://github.com/notifications/unsubscribe-auth/AAJ0z5qFb7gSW4w14_RbFNjsn4sRYV78ks5sWI7hgaJpZM4L3JbX
.

@victornoel Saya menggunakan v0.27.5 di mesin jenkins, sama dengan lokal saya.

Silakan coba nightlies: https://yarnpkg.com/en/docs/nightly

Menghapus file yarn.lock dan yarn install memperbaiki masalah saya.

Ini juga menyebabkan build Jenkins saya sesekali gagal. Biasanya ini berfungsi setelah percobaan kedua tetapi akan gagal lagi nanti.

@ajcrites @Redmega @headione @benmerckx Anda harus membuka masalah lain jika Anda mengalami masalah seperti ini. Masalah ini telah diperbaiki dengan pasti, jadi masalah Anda pasti berbeda, meskipun itu menunjukkan beberapa gejala yang serupa.
Saya cukup yakin ada lebih banyak peluang untuk menyelesaikan masalah Anda jika Anda membuka masalah lain :)

Kami memiliki masalah yang sama, melakukan pembuatan paket paralel di Jenkins dengan Node 8.5. Saat ini kami harus tetap menggunakan 0.27.5, hingga 1.0.2 dirilis untuk memperbaiki bug lain. Tapi terima kasih atas dukungan Anda dan tetap bekerja :)

@floric Saya mendapatkan masalah yang sama dengan konteks yang sama (Jenkins + Paralel) dengan node 8.9.4, apakah masalah Anda telah teratasi?

Sunting: Saya akan mencoba menggunakan 8.11.1 untuk melihat apakah itu menyertakan versi benang terbaru tanpa bug.

@Niceplace Anda mungkin ingin mencoba opsi --mutex : https://yarnpkg.com/en/docs/cli#toc -concurrency-and-mutex

Kami memiliki rencana untuk menambahkan penguncian per paket yang lebih baik untuk menghindari hal ini segera.

Saya mengalami kesalahan intermiten dengan ENOENT: no such file or directory, chmod dan ENOENT: no such file or directory, lstat mencoba menjalankan yarn --mutex=network pada root monorepo dengan ruang kerja Yarn diaktifkan ...

Sepertinya tidak konsisten, saya mendapatkan salah satunya secara acak. (1.6.0 dan node 8.11.1 dan 9.11.1)

Secara khusus, kesalahannya adalah:

error An unexpected error occurred: "ENOENT: no such file or directory, lstat '/Users/federicozivolo/test/packages/foobar/node_modules/detect-port-alt'".

dan

error An unexpected error occurred: "ENOENT: no such file or directory, chmod '/Users/federicozivolo/test/packages/foobar/node_modules/jest/node_modules/.bin/jest'".

Saya menjalankan Yarn 1.7.0 dan saya mengalami kesalahan serupa. Yarn akhirnya berhasil menginstal paket setelah beberapa kali berjalan.

An unexpected error occurred: "ENOENT: no such file or directory, lstat '/home/nieltg/.cache/yarn/v1/npm-npm-registry-client-8.5.1-8115809c0a4b40938b8a109b8ea74d26c6f5d7f1/lib/dist-tags/fetch.js'".

EDIT:
Saya telah menggunakan yarn --network-concurrency 1 tetapi kesalahan masih terjadi pada saya. Berikut adalah contoh lain dari file error dan benang-error.log .

An unexpected error occurred: "ENOENT: no such file or directory, copyfile '/home/nieltg/.cache/yarn/v1/npm-core-js-2.5.7-f972608ff0cead68b841a16a932d0b183791814e/library/fn/date/now.js' -> '/mnt/c/Users/nieltg/Projects/React/React-16-Demo/node_modules/core-js/library/fn/date/now.js'".

Saya menggunakan Yarn 1.7.0. Dan saya dapat memastikan bahwa perilaku yang sama masih terjadi pada saya.

Ini benar-benar acak. Terkadang itu terjadi, terkadang tidak.

Yang terakhir saya terima adalah:

error An unexpected error occurred: "ENOENT: no such file or directory, lstat '/root/.yarn-cache/v1/npm-@storybook/addon-actions-3.4.5-ba0d0c0c74357c0852e0b890b40

Saya sering melihat kesalahan ini dengan Yarn 1.9.2 di Subsistem Windows untuk Linux.

Hari ini kami mendapat masalah serupa dengan paket yang rusak pada Jenkins CI di mana pipeline menjalankan yarn install secara paralel. Itu bekerja dengan baik beberapa hari yang lalu.
Diperbaiki dengan yarn install --network-concurrency 1 (seperti yang disebutkan dalam komentar ). Performa tidak banyak menurun: ~ 7 detik -> ~ 8 detik.

Mengapa ini ditutup? Itu masih terjadi:

Toms-MacBook-Pro-2:design-to-code tommedema$ yarn install
yarn install v1.9.4
[1/4] 🔍  Resolving packages...
[2/4] 🚚  Fetching packages...
[3/4] 🔗  Linking dependencies...
error An unexpected error occurred: "ENOENT: no such file or directory, lstat '/Users/tommedema/projects/vg/design-to-code/packages/vgcli/node_modules/fs-extra'".
info If you think this is a bug, please open a bug report with the information provided in "/Users/tommedema/projects/vg/design-to-code/yarn-error.log".
info Visit https://yarnpkg.com/en/docs/cli/install for documentation about this command.
Toms-MacBook-Pro-2:design-to-code tommedema$ yarn install --network-concurrency 1
yarn install v1.9.4
[1/4] 🔍  Resolving packages...
[2/4] 🚚  Fetching packages...
[3/4] 🔗  Linking dependencies...
[4/4] 📃  Building fresh packages...
✨  Done in 24.85s.

Perhatikan bahwa dalam kasus saya itu hilang setelah melakukan yarn remove fs-extra dan yarn add fs-extra dalam dua paket, secara efektif meningkatkan ketergantungan ini.

Hai, saya rasa saya menemukan sesuatu.

Saya mencoba-coba dengan sepotong kode yang mencantumkan file dalam direktori tertentu secara rekursif menggunakan fs dan rxjs dan saya menemukan bahwa kemungkinan besar gagal jika saya tidak menunggu lstat panggilan harus diselesaikan sebelum memanggil lstat .

Saya telah membuat paket NPM sederhana, async-dirtree-test , untuk menguji apakah lingkungan Anda terpengaruh atau tidak dengan ini. Saya menggunakan WSL dan saya menemukan bahwa kemungkinan gagal saat menangani direktori yang memiliki banyak direktori anak, seperti node_modules , bahkan dengan jumlah konkurensi yang rendah.

Yah, saya masih tidak tahu apakah masalah ini spesifik WSL atau tidak. Saat ini saya tidak dapat mengujinya di lingkungan lain, seperti Linux, Mac, dll.

@nieltg Saya ingin membagikan pengamatan yang mungkin membantu membentuk beberapa yang lain. Saya menggunakan Docker CE di WSL dan Docker untuk Windows sebagai host saya sehingga ketika saya bekerja dengan Docker di WSL, rasanya asli, tetapi pada kenyataannya host beroperasi di dunia Windows secara asli (jadi Dockerfiles saya benar-benar menyelesaikan / c / foobar ke c: / foobar di mesin Docker). Ini sangat relevan ketika saya menggunakan binding (di dalam container saya, saya memasang folder lokal saya sehingga / usr / src di dalam container pada akhirnya berada di c: / src / foobar (meskipun Dockerfile saya akan menampilkan pengikatan sebagai / c / src / foobar: / usr / src (lihat terjemahan otomatis di jalur?)

Perbedaan ini penting karena jika saya yarn install di dalam salah satu folder lokal tersebut, di dalam wadah saya, saya mendapatkan kesalahan yang sama yang saya lakukan secara langsung di WSL (tidak ada Docker yang terlibat).

Di sisi lain .... jika saya hanya mkdir /tmp/src && cp ./package.json /tmp/src/ && cd /tmp/src && yarn install , semuanya berhasil dengan sempurna dan saya hanya bisa mv /tmp/src/node_modules /c/src/foobar/ dan saya baik-baik saja, jadi itulah solusi saya saat ini. Ingatlah bahwa /tmp ada sebagai toko buruh pelabuhan (semua IO terlihat seperti satu file ke OS karena secara efektif merupakan partisi dalam file).

Saya tahu bahwa melibatkan buruh pelabuhan tidak ideal di sini, tetapi tampaknya menunjukkan bahwa penanganan file yang cepat mungkin menjadi masalah karena IO sendiri tidak dan mungkin membantu orang lain mengatasi hal ini.

... teralihkan dan dikirim terlalu cepat. Bagaimanapun, otak saya ada di tempat lain saat ini, tetapi saya akan kembali lagi nanti dan melihat apakah saya dapat merancang tes menggunakan pendekatan Anda dan Docker untuk menarik kesimpulan lebih lanjut.

BUKA kembali

Kami baru-baru ini mulai melihat jenis kesalahan yang sama menggunakan benang 1.10.1, menjalankan CI build di Azure Devops (sebelumnya Visual Studio Team Services).

Ketergantungan aktual yang gagal tampaknya acak terbaik yang bisa saya katakan, tetapi yarn install jatuh sesekali dengan kesalahan ENOENT: no such file or directory, open '/usr/local/share/.cache/yarn........ . Suatu saat build akan berfungsi, selanjutnya akan gagal.

Solusi dari yarn install --network-concurrency 1 tampaknya berhasil untuk kami.

@ Marclev78 kesalahan yang sama tetapi yarn install --network-concurrency 1 sepertinya tidak berhasil untuk saya

@ Marclev78 hal yang sama di sini, menggunakan benang 1.10.1 di Azure Devops dan mendapatkan kesalahan:

Error: https://registry.yarnpkg.com/core-js/-/core-js-1.2.7.tgz: ENOENT: no such file or directory, utime 'C:\Users\grpsshagent\AppData\Local\Yarn\Cache\v1\npm-core-js-1.2.7-652294c14651db28fa93bd2d5ff2983a4f08c636\fn\string\pad-left.js'

Secara lokal semuanya berfungsi seperti yang diharapkan.

Saya di sini hanya untuk mengatakan bahwa saya juga melihat kesalahan ini.

error An unexpected error occurred: "ENOENT: no such file or directory, chmod '/usr/local/opt/asdf/installs/nodejs/8.12.0/.npm/bin/atob'".

Sayangnya saya pikir saya harus meninggalkan benang untuk binari simpul global saya dan kembali ke npm sampai ini diperbaiki.

Sayangnya, masalah ini mulai mengganggu bangunan CI kami baru-baru ini juga; (

Saran @rainabba berhasil untuk saya pada WSL

Menurut saya, operasi tulis dan baca juga berperilaku berbeda. Bahkan dengan peretasan saya, saya sering melihat kesalahan saat memanggil fs.writeFile node (dibungkus dengan bluebird promisify). Dalam setiap contoh, saya dapat mengonfirmasi bahwa file tersebut ada segera setelah saya mendapatkan kesalahan penulisan.

Saya mengirim string (konten file XML) ke fs.writeFile (), yang pada akhirnya memanggil yang berikut ini, tetapi saya tidak yakin apakah saya siap untuk melakukan tantangan yang diperlukan untuk menyiapkan build kustom dengan debugging tambahan keluaran dari proyek C ++ ini, sehingga saya dapat memastikan di mana tepatnya perasaan yang benar menurut simpul atau modul C ++ ini.

Intinya adalah bahwa penulisan tidak gagal, tetapi node percaya mereka begitu skenario yang masuk akal bagi saya adalah bahwa modul c + plus berhasil, tetapi secara internal memeriksa file dan gagal, kemudian laporan tidak merasa kembali ke node dan kemudian penulisan sebenarnya terjadi sehingga ketika saya pergi untuk memeriksa file, file itu ada dan kesalahannya tidak masuk akal.

https://github.com/nodejs/node/blob/master/src/node_file.cc#L1795

@ Bestander cara apa pun untuk membuka kembali masalah itu? Jelas ini tidak diperbaiki dan berdampak pada banyak orang.

Mengonfirmasi hal ini masih terjadi dengan benang 1.12 dan Azure Pipelines.

Terima kasih telah mengonfirmasi semuanya.
Sepertinya ada beberapa alasan untuk kesalahan tersebut.
Saya akan membuka kembali masalah ini, meskipun bantuan komunitas untuk men-debug ini diperlukan.

juga terjadi dengan benang 1,11, tetapi tidak dengan 1,10

@bestander - Terkait? https://github.com/yarnpkg/yarn/issues/6312

Jika demikian, ada beberapa pekerjaan repro bagus di sana

Saya terpengaruh oleh masalah ini juga.

Windows 10 / WSL

"ENOENT: no such file or directory, lstat '/mnt/c/Users/<username>/.cache/yarn/v4/<random_file_in_random_package>"

@limonte WSL mengalami kesalahan untuk sementara waktu yang secara acak akan memunculkan kesalahan serupa saat menjalankan npm install / yarn install. Itu terjadi ketika banyak file sekaligus disalin ke hard drive. Pastikan Anda menggunakan versi Windows terbaru (1809 atau lebih tinggi), karena ini mungkin bukan disebabkan oleh thread itu sendiri.

Kami juga melihat masalah Extracting tar content of undefined .

error https://registry.yarnpkg.com/eslint/-/eslint-4.19.1.tgz: Extracting tar content of undefined failed, the file appears to be corrupt: "ENOENT: no such file or directory, stat '/tmp/yarncache.KTKNZ/v4/npm-eslint-4.19.1-32d1d653e1d90408854bfb296f076ec7e186a300/node_modules/eslint/lib/rules/no-compare-neg-zero.js'"

Sejauh ini kami mengurangi ini dengan hanya menggunakan satu koneksi jaringan bersamaan dengan opsi --network-concurrency 1 . Tapi ini lebih merupakan solusi sementara.

Saya juga dapat mengonfirmasi masalah pada node:11.5.0-alpine .

error An unexpected error occurred: "ENOENT: no such file or directory, lstat '/app/node_modules/<random_pacakge>

Saya perhatikan bahwa masalahnya tampaknya terkait dengan menautkan ke versi paket repositori git.

Reproduksi

package.json

{
  "dependencies": {
    "react-navigation-core": "https://github.com/react-navigation/react-navigation-core",
    "react-navigation-hooks": "https://github.com/react-navigation/react-navigation-hooks"
  }
}

rm -rf node_modules && yarn cache clean && yarn

Solusi

Menyetel network-concurrency 1 memperbaiki masalah saya.

Menjalankan npm install juga berfungsi.

Catatan

Menghapus salah satu paket dari daftar dependensi tidak menyebabkan kesalahan, juga tidak menggunakan versi npm yang diterbitkan dari paket tersebut.

Tampaknya melempar kesalahan yang berbeda setiap saat. Tampaknya terjadi secara acak pada file yang berbeda dan dengan kesalahan yang sedikit berbeda.

error https://registry.yarnpkg.com/core-js/-/core-js-1.2.7.tgz: Extracting tar content of undefined failed, the file appears to be corrupt: "ENOENT: no such file or directory, chmod  '/home/cameron/.cache/yarn/v4/npm-core-js-1.2.7-652294c14651db28fa93bd2d5ff2983a4f08c636/node_modules/core-js/library/modules/es6.reflect.apply.js'"

Variasi

  • ENOENT: no such file or directory, chmod
  • ENOENT: no such file or directory, stat
  • ENOENT: no such file or directory, open
  • EEXIST: file already exists, mkdir

Pesan lainnya

info There appears to be trouble with your network connection. Retrying...

Memang, saya baru saja mencoba mereproduksi menggunakan package.json Anda dan kesalahan muncul pada percobaan pertama.

Lapisan apa sistem file WSL berinteraksi dengan NTFS fs yang sudah ada?

Apakah Anda orang-orang melihat kesalahan ini di drive yang terpasang (/ c atau / mnt / c untuk contoh umum), atau di luar salah satu tunggangan itu? Pikiran menguji alternatif (~ /. Misalnya) dan melaporkan perbedaan?

Intuisi saya mengganggu saya, tetapi saya mungkin mengalami masalah yang membingungkan dengan pengalaman buruh pelabuhan saya dan saya perlu memeriksanya secara mandiri.

[2/4] Mengambil paket ...
error https://registry.yarnpkg.com/smartwrap/-/smartwrap-1.0.10.tgz : Mengekstrak konten tar yang tidak ditentukan gagal, file tersebut tampaknya co
rrupt: "ENOENT: tidak ada file atau direktori seperti itu, buka 'C: \ Users \ Administrator \ AppData \ Local \ Yarn \ Cache \ v4 \ npm-smartwrap-1.0.10-873ef350d
4ee1262fed4a80a55634d86ae1faf48 \ node_modules \ smartwrap \ ejq '"
info Kunjungi https://yarnpkg.com/en/docs/cli/global untuk dokumentasi tentang perintah ini.

Apakah Anda orang-orang melihat kesalahan ini di drive yang terpasang (/ c atau / mnt / c untuk contoh umum), atau di luar salah satu tunggangan itu? Pikiran menguji alternatif (~ /. Misalnya) dan melaporkan perbedaan?

Apakah ada kasus yang dapat direproduksi secara konsisten di mana hal ini terjadi? Ini cukup acak bagi saya, tetapi saya melakukan semua yarn add -ing saya pada drive yang terpasang dan ini sering terjadi.

Saya dapat mereproduksi https://github.com/yarnpkg/yarn/issues/2629#issuecomment -451638917 di drive yang terpasang dan di ~ .

Saya juga mencoba mereproduksi https://github.com/yarnpkg/yarn/issues/2629#issuecomment -282745896 tetapi terus gagal mengambil paket terakhir, yang saya yakin tidak ada hubungannya.

Saya mengalami masalah yang sama dalam beberapa jam terakhir. benang secara acak gagal menginstal berbagai paket, menunjukkan kesalahan yang disebutkan di atas.

Saya mencoba mengatur ulang cache benang dan menginstal ulang dan menjalankan dengan jaringan-konkurensi 1, tidak ada yang berhasil.

Apa yang memecahkan masalah bagi saya, beralih ke jaringan yang berbeda (hanya menggunakan AP ponsel saya, bukan WiFi) dan semuanya bekerja seperti sulap.

Saya memiliki firasat bahwa masalah ini mungkin terkait dengan pemulihan yang salah penanganan untuk beberapa kesalahan jaringan yang sangat spesifik. Akan memeriksanya nanti.

Saya dapat mengkonfirmasi komentar sebelumnya. Menyetel network-concurrency tidak membantu. Beralih ke Hotspot ponsel memperbaiki masalah saya. Lingkungan saya: Windows 10 (subsistem Linux - Ubuntu)

Saya menggunakan WSL dan telah melihat masalah ini dengan paket geo-tz yang memiliki struktur folder bersarang dalam (agak aneh). Saya mencoba beberapa hal --network-timeout dan --network-concurrency tetapi tidak berhasil. Namun, ketika saya mengaktifkan jalur panjang di Windows (lihat posting SuperUser ini) sekarang berfungsi dengan baik. Mungkin ini bisa membantu beberapa orang lain di WSL. Edit sepertinya saya berbicara terlalu cepat. Itu berfungsi, dan menghubungkan dependensi lebih cepat, tetapi sekarang saya melihat kesalahan yang sama lagi.

Masih melanggar CI ....

Kami memiliki masalah yang sama dengan Yarn 1.13.0 yang berjalan pada mesin Debian Linux yang berfungsi sebagai node slave Jenkins. Perhatikan bahwa kami memiliki server repositori benang lokal, jadi selama pembuatan, tidak ada (atau sangat sedikit) unduhan fisik dari server repo internet publik.

yarn install v1.13.0
[1/4] Resolving packages...
[2/4] Fetching packages...
error An unexpected error occurred: "http://sqrep01.rsint.net:4873/lodash/-/lodash-4.17.10.tgz: ENOENT: no such file or directory, open '/home/jenkins/.cache/yarn/v4/npm-lodash-4.17.10-1b7793cf7259ea38fb3661d4d38b3260af8ae4e7/node_modules/lodash/.yarn-tarball.tgz'".

File sebenarnya sudah ada, baik di server repo kami maupun di sistem file.
Jika kita memulai pembangunan lagi, pembangunan mungkin berhasil atau mungkin gagal dengan beberapa file (acak) lainnya.
Kami tidak mengubah setelan konkurensi jaringan default.

Ditto - Ini masih menjadi masalah, bahkan di 1.14

Arguments: 
  /home/jeff/n/bin/node /usr/share/yarn/bin/yarn.js install

PATH: 
  /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/mnt/c/Windows/System32:/mnt/c/Windows:/mnt/c/Windows/System32/wbem:/mnt/c/Windows/System32/WindowsPowerShell/v1.0:/mnt/c/Program Files (x86)/NVIDIA Corporation/PhysX/Common:/mnt/c/Windows/System32:/mnt/c/Windows:/mnt/c/Windows/System32/wbem:/mnt/c/Windows/System32/WindowsPowerShell/v1.0:/mnt/c/Windows/System32/OpenSSH:/mnt/c/Program Files/NVIDIA Corporation/NVIDIA NvDLISR:/mnt/c/Program Files/Git/cmd:/mnt/c/Users/jkono/AppData/Local/Microsoft/WindowsApps:/mnt/c/Users/jkono/AppData/Local/hyper/app-2.1.2/resources/bin:/mnt/c/Users/jkono/AppData/Local/Programs/Microsoft VS Code/bin:/home/jeff/n/bin

Yarn version: 
  1.14.0

Node version: 
  10.15.1

Platform: 
  linux x64

Trace: 
  Error: ENOENT: no such file or directory, scandir '/mnt/c/Users/jkono/dev/PROJECT/node_modules/@storybook/addon-links/src'

Juga:

➜  yarn cache dir
/mnt/c/Users/jkono/home/.cache/yarn/v4

Ini cukup mengganggu, kami melihat ini setiap hari di mesin lokal dan ci.

Memastikan ini terjadi sepanjang waktu di CI untuk kami juga

Hai, mengonfirmasi bahwa masalah ini terjadi di CI kami.
Ini sejalan dengan masalah.

error https://registry.yarnpkg.com/core-js/-/core-js-1.2.7.tgz : Mengekstrak konten tar yang tidak ditentukan gagal, file tampaknya rusak: "ENOENT: tidak ada file atau direktori seperti itu, chmod '/usr/local/share/.cache/yarn/v4/npm-core-js-1.2.7-652294c14651db28fa93bd2d5ff2983a4f08c636/node_modules/core-js/es7/regexp.js' "
info Kunjungi https://yarnpkg.com/en/docs/cli/install untuk dokumentasi tentang perintah ini.

Masalah yang sama mulai terjadi hari ini pada salah satu proyek sumber terbuka kami.

Anda dapat melihat build yang gagal di sini:
https://travis-ci.com/quid/refraction/builds/103692106

Dan yang berhasil (dengan --network-concurrency 1 ) di sini:
https://travis-ci.com/quid/refraction/builds/103693682

Saya harap ini dapat membantu untuk mendiagnosis masalah!

Kode sumber repositori ada di:
https://github.com/quid/refraction

Mungkin ini membantu seseorang:
Pada Jenkins CI kami, masalahnya adalah Jenkins memicu build paralel untuk aplikasi kami, yang berarti bahwa dua (atau lebih) skrip shell telah memicu "pemasangan benang" pada saat yang sama, di mana salah satu proses build selanjutnya _menghapus cache-benang completely_ (menggunakan "yarn cache clean") sebelum memulai "yarn install". Ini adalah masalah fatal untuk proses benang lainnya tentunya.
Kami kemudian menghapus pembersihan cache dan mengubah perintah benang menjadi
yarn install --verbose --prefer-offline --mutex file:/tmp/.yarn-mutex --network-concurrency 1
(_-- verbose_ tidak terlalu diperlukan) dan disisipkan
child-concurrency 1
di .yarnrc.
Sekarang, saat pembuatan paralel dipicu, benang telah mendeteksi bahwa proses benang lain aktif dan menunggu sampai selesai. Ini memecahkan masalah "tidak ada file seperti itu" di CI kami.

Saya mendapatkan masalah ini di komputer lokal saya setiap kali saya menggunakan referensi paket dengan format ini:

"connect-js-adapter-tls": "git+https://github.com/jeremyjs/connect-js-adapter-tls.git#v3.2.2",

Karakteristik penting: paket pribadi, url github, git + https, referensi git yang diberi tag

Langkah-langkah yang mereproduksi untuk saya:

  1. Bersihkan papan tulis: Hapus semua referensi tersebut dan jalankan yarn install . Ini bekerja dengan baik.
  2. Tambahkan semua referensi tersebut kembali ke package.json dan jalankan yarn install lagi, ini masih berfungsi dengan baik pada penggunaan pertama setelah referensi ini ditambahkan kembali.
  3. Menjalankan yarn install kali tambahan setelah itu berfungsi selama tidak ada perubahan.
  4. Namun, modifikasi paket apa pun dan jalankan yarn install dan saya mendapatkan kesalahan.
  5. Jika saya kemudian menghapus semua paket tersebut dan menjalankan yarn install saya tidak mendapatkan kesalahan. Itu membawa kita kembali ke langkah 1.

Kesalahan terlihat seperti ini:

error An unexpected error occurred: "ENOENT: no such file or directory, open '/Users/jeremy/Library/Caches/Yarn/v4/npm-connect-js-adapter-tls-3.2.2-0c97726d92c21183a7fb7334344eb5047e8bc158/node_modules/connect-js-adapter-tls/.yarn-metadata.json'".

Jika saya menghapus semua referensi tag git, saya mengamati perilaku yang sama. Jadi saya yakin bukan itu masalahnya.
yaitu

"connect-js-adapter-tls": "git+https://github.com/jeremyjs/connect-js-adapter-tls.git",

Menjalankan npm install juga memberikan kesalahan:

npm ERR! premature close

npm ERR! A complete log of this run can be found in:
npm ERR!     /Users/jeremy/.npm/_logs/2019-03-20T04_38_38_739Z-debug.log

npm-debug.log: https://gist.github.com/jeremyjs/e97381b16f46124ff7a9bd75ad79fd62

Sebagai tindak lanjut, saya menggunakan solusi untuk membuat skrip package.json untuk membersihkan paket-paket tersebut dari cache saya sebelum menginstal:

"install-clean": "yarn cache clean connect-js-adapter-tls connect-js-api connect-js-codec connect-js-encode-decode connect-protobuf-messages && yarn install"

Apakah sudah ada gagasan tentang masalah apa ini?
Dalam kasus kami, kami menjalankan yarn install sebagai bagian dari CI kami (di dalam container docker) dan mendapatkan kesalahan yang sama ini. Kami telah mencoba yarn cache clean

Tidak yakin apa lagi yang harus dicoba pada saat ini dan itu menghentikan pembangunan kami. 😬

Dan, apakah Anda mencoba menjalankan --network-concurrency 1? Saya memiliki yang serupa
skenario dan itu memecahkan masalah saya.
Pada tanggal 2 Apr 2019 22:17, "Dan Van Brunt" [email protected] menulis:

Apakah sudah ada gagasan tentang masalah apa ini?
Dalam kasus kami, kami menjalankan pemasangan benang sebagai bagian dari CI kami (di dalam buruh pelabuhan
container) dan mendapatkan kesalahan yang sama. Kami telah mencoba membersihkan cache benang

Tidak yakin apa lagi yang harus dicoba pada saat ini dan itu menghentikan pembangunan kami. 😬

-
Anda menerima ini karena Anda berlangganan utas ini.
Balas email ini secara langsung, lihat di GitHub
https://github.com/yarnpkg/yarn/issues/2629#issuecomment-479283590 , atau nonaktifkan
utasnya
https://github.com/notifications/unsubscribe-auth/AFU4O1iKA-HBd62Hema1ETmuUlMro_GLks5vdAEOgaJpZM4L3JbX
.

@tevaum yang memecahkan masalah CI kami juga. Itu juga memperlambat pembangunan kami secara signifikan. Sangat buruk, namun hanya ada solusi.

Ya. Ini adalah kerugian yang buruk. Anda dapat mencoba dengan angka kecil seperti 2 atau 4 ... itu
akan sedikit lebih cepat, tetapi bagi saya, satu-satunya nilai yang berhasil adalah 1: /

Jadi kita harus menunggu perbaikan yang sebenarnya agar bahagia;)
Pada 4 Apr 2019 00:26, "kunokdev" [email protected] menulis:

@tevaum https://github.com/tevaum yang juga memecahkan masalah untuk CI kami.
Itu juga memperlambat pembangunan kami secara signifikan. Sangat buruk.

-
Anda menerima ini karena Anda disebutkan.

Balas email ini secara langsung, lihat di GitHub
https://github.com/yarnpkg/yarn/issues/2629#issuecomment-479735791 , atau nonaktifkan
utasnya
https://github.com/notifications/unsubscribe-auth/AFU4O1a9lHn41K0eEQT9zZZzOoATiT61ks5vdXD8gaJpZM4L3JbX
.

Akankah ini diperbaiki? Hal ini menyebabkan benang tidak dapat digunakan pada lebih dari satu proyek saya

Harap gunakan opsi mutex, didokumentasikan di sini: https://yarnpkg.com/en/docs/cli/#toc -concurrency-and-mutex

Penggunaan cache Yarn tidak aman untuk digunakan dalam proses multi-proses dan ini adalah alasan kesalahan tersebut.

Alternatifnya, Anda dapat menyetel folder cache per proses menggunakan opsi --cache-folder yang didokumentasikan di sini: https://yarnpkg.com/en/docs/cli/cache#change -the-cache-path-for-yarn-

Kelemahan dari menggunakan opsi mutex adalah memiliki hanya satu contoh benang di seluruh mesin (yang lain akan menunggu sampai proses aktif berakhir) yang berarti tidak ada konkurensi sama sekali di seluruh pekerjaan CI.

Kelemahan dari folder cache per proses meningkat I / O dan beberapa potensi hilang karena penggunaan kembali cache yang lebih sedikit.

Solusi yang ideal adalah dengan mengimplementasikan implementasi cache proses-aman yang tidak mudah dengan kurangnya kemampuan penguncian file di Node (satu-satunya pilihan yang dapat diandalkan tampaknya membuat direktori mutex). Cara terbaik kedua adalah menggunakan folder cache per-parallel-arm yang memungkinkan konkurensi dan penggunaan ulang cache di lengan yang sama.

Saya tidak berpikir itu adalah barang mutex. Saya dan beberapa orang lain menjalankan benang tunggal pada satu waktu - dalam kasus saya, hanya RUN yarn install dalam Dockerfile - selama fase pembuatan gambar buruh pelabuhan. Itu membuatnya cukup yakin bahwa tidak ada proses lain yang berjalan secara bersamaan di lingkungan itu.

Lihat ini, contoh reproduksi minimal (setidaknya untuk OSX saya):

728 22:49:55 iMac ~/tmp/ynse$ ls
Dockerfile  package.json
729 22:49:58 iMac ~/tmp/ynse$ cat Dockerfile
FROM node
ADD . /app
WORKDIR /app
RUN yarn

730 22:50:00 iMac ~/tmp/ynse$ cat package.json
{
  "dependencies": {
    "react-navigation-core": "https://github.com/react-navigation/react-navigation-core",
    "react-navigation-hooks": "https://github.com/react-navigation/react-navigation-hooks"
  }
}
731 22:50:03 iMac ~/tmp/ynse$ docker build -t yt .
Sending build context to Docker daemon  15.87kB
Step 1/4 : FROM node
 ---> 39337023f8d4
Step 2/4 : ADD . /app
 ---> aa86b2d7f191
Step 3/4 : WORKDIR /app
 ---> Running in 83baa8603935
Removing intermediate container 83baa8603935
 ---> 80741f170292
Step 4/4 : RUN yarn
 ---> Running in 0718118bdcd6
yarn install v1.3.2
warning package.json: No license field
info No lockfile found.
warning No license field
[1/4] Resolving packages...
[2/4] Fetching packages...
[1/4] Resolving packages...
[2/4] Fetching packages...
[1/4] Resolving packages...
[2/4] Fetching packages...
info If you think this is a bug, please open a bug report with the information provided in "/app/yarn-error.log".
info Visit https://yarnpkg.com/en/docs/cli/install for documentation about this command.
error An unexpected error occurred: "https://registry.yarnpkg.com/lodash/-/lodash-4.17.11.tgz: EEXIST: file already exists, mkdir '/usr/local/share/.cache/yarn/v1/npm-lodash-4.17.11-b39ea6229ef607ecd89e2c8df12536891cac9b8d'".
^C
732 22:50:23 iMac ~/tmp/ynse$

@nopik - Benang 1.3.2 sangat tua dan ada banyak perbaikan setelah versi itu. Sudahkah Anda mencoba menggunakan salah satu yang terbaru di dalam Docker?

Memang, gambar node itu sudah cukup tua. Ini yang baru diunduh beberapa menit yang lalu dari node dockerhub

Sending build context to Docker daemon  15.87kB
Step 1/4 : FROM node
 ---> a9c1445cbd52
Step 2/4 : ADD . /app
 ---> Using cache
 ---> 26ed37136c09
Step 3/4 : WORKDIR /app
 ---> Using cache
 ---> b2339e7d25af
Step 4/4 : RUN yarn
 ---> Running in cdbdfd9c373c
yarn install v1.15.2
warning package.json: No license field
info No lockfile found.
warning No license field
[1/4] Resolving packages...
[2/4] Fetching packages...
[1/4] Resolving packages...
[2/4] Fetching packages...
[1/4] Resolving packages...
[2/4] Fetching packages...
error An unexpected error occurred: "ENOTEMPTY: directory not empty, rmdir '/usr/local/share/.cache/yarn/v4/npm-lodash-4.17.11-b39ea6229ef607ecd89e2c8df12536891cac9b8d/node_modules/lodash'".
info If you think this is a bug, please open a bug report with the information provided in "/app/yarn-error.log".
info Visit https://yarnpkg.com/en/docs/cli/install for documentation about this command.

@BYK Sudahkah Anda mencoba membuat buruh pelabuhan ini sendiri?

Akan mencoba dalam beberapa hari setelah saya masuk ke komputer saya (di ponsel sekarang). Terlihat sangat aneh tetapi direktorinya konsisten. Saya akan mencoba untuk melihat apa yang terjadi, terima kasih atas kasus repro.

@nopik - melihat lebih dekat ke log, itu memang menunjukkan beberapa instance Yarn yang berjalan secara paralel. Anda seharusnya tidak pernah melihat pesan "Menyelesaikan paket" yang sama dua kali. Saya tidak tahu mengapa itu terjadi tetapi saya 100% yakin itulah alasannya.

@BYK Saya mengerti, bahwa salah satu paket itu memiliki "scripts": { "build": "yarn babel --out-dir dist && del-cli 'dist/**/__tests__' && yarn tsc --emitDeclarationOnly", "prepare": "yarn build" } yang lain memiliki skrip yang berbeda, tetapi masih menjalankan benang dalam persiapan .. Apakah yang diluncurkan oleh benang selama instalasi?

@Nopik - jangan berpikir ini akan menyebabkan masalah karena mereka hanya menjalankan skrip, bukan penginstalan lain. Juga skrip tersebut dijalankan setelah fase I / O. Pasti ada hal lain yang memicu beberapa yarn install instanaces.

Saya setuju bahwa itu mungkin beberapa contoh benang yang berjalan secara bersamaan. Masalahnya adalah ini terjadi pada satu pemanggilan cli yarn . Ini tidak perlu buruh pelabuhan untuk mereproduksi.

Teori saya, yang memang kurang informasi, adalah bahwa itu adalah sesuatu yang terkait dengan langkah persiapan dan benang itu mungkin meluncurkan contoh tambahan untuk "membangun" paket git. Secara khusus saya yakin itu adalah dua dependensi yang masing-masing bergantung pada paket umum yang juga perlu dibangun. Yarn mencoba untuk menjadi pintar dan membangun setiap paket terpisah secara paralel tetapi gagal ketika mencoba membangun dua paket di lokasi cache yang sama.

Dalam kasus kami, kami tidak memiliki beberapa contoh benang.

Sistem kami berjalan di citra buruh pelabuhan sendiri. Ini memiliki satu _ pemasangan benang _. Tiba-tiba mengalami gangguan dan sekarang kami tidak dapat bekerja tanpa pengaturan konkurensi jaringan ke 1.
Kecuali benang itu sendiri berubah dalam semalam, saya tidak melihat masalah selain benang yang membuat masalah itu sendiri dengan kondisi tertentu.

Jika Anda mencoba menyelesaikan masalah ini dengan --mutex file atau bahkan --mutex network , Anda pasti (mungkin) baru saja mengalami bug ini https://github.com/yarnpkg/yarn/issues/6650 (buka / tidak terselesaikan selama 6 bulan sekarang) 😢

Yang berarti setelah Anda menjalankan yarn install , meskipun itu akan berhasil, Anda tidak akan pernah bisa menjalankan perintah benang lainnya

Dan, apakah Anda mencoba menjalankan --network-concurrency 1? Saya memiliki skenario serupa dan itu memecahkan masalah saya.

@tevaum - Itulah masalahnya. TERIMA KASIH!
Saya memiliki skrip yang menurut saya tidak akan pernah berjalan lebih dari satu kali, tetapi ternyata itu. 🤦‍♂️

@tevaum juga memecahkan masalah saya. Terima kasih.

Jika Anda mencoba untuk menyelesaikan masalah ini dengan --mutex file atau bahkan --mutex jaringan, Anda pasti (mungkin) akan mengalami bug ini # 6650 (terbuka / tidak terselesaikan selama 6 bulan sekarang)

@sarink - Saya juga menemukan bug opsi mutex; terima kasih telah menyebutkannya.

yarn mengatakan semuanya baik-baik saja.

PS C:\Users\chtacklind\Desktop\git\Project> yarn --verbose
yarn install v1.10.1
verbose 0.282 Checking for configuration file "C:\\Users\\chtacklind\\Desktop\\git\\Project\\.npmrc".
verbose 0.284 Found configuration file "C:\\Users\\chtacklind\\Desktop\\git\\Project\\.npmrc".
verbose 0.285 Checking for configuration file "C:\\Users\\chtacklind\\.npmrc".
verbose 0.286 Checking for configuration file "C:\\Program Files\\nodejs\\etc\\npmrc".
verbose 0.288 Checking for configuration file "C:\\Users\\chtacklind\\Desktop\\git\\Project\\.npmrc".
verbose 0.289 Found configuration file "C:\\Users\\chtacklind\\Desktop\\git\\Project\\.npmrc".
verbose 0.29 Checking for configuration file "C:\\Users\\chtacklind\\Desktop\\git\\.npmrc".
verbose 0.291 Checking for configuration file "C:\\Users\\chtacklind\\Desktop\\.npmrc".
verbose 0.295 Checking for configuration file "C:\\Users\\chtacklind\\.npmrc".
verbose 0.297 Checking for configuration file "C:\\Users\\.npmrc".
verbose 0.3 Checking for configuration file "C:\\Users\\chtacklind\\Desktop\\git\\Project\\.yarnrc".
verbose 0.301 Found configuration file "C:\\Users\\chtacklind\\Desktop\\git\\Project\\.yarnrc".
verbose 0.302 Checking for configuration file "C:\\Users\\chtacklind\\.yarnrc".
verbose 0.309 Found configuration file "C:\\Users\\chtacklind\\.yarnrc".
verbose 0.312 Checking for configuration file "C:\\Program Files\\nodejs\\etc\\yarnrc".
verbose 0.317 Checking for configuration file "C:\\Users\\chtacklind\\Desktop\\git\\Project\\.yarnrc".
verbose 0.318 Found configuration file "C:\\Users\\chtacklind\\Desktop\\git\\Project\\.yarnrc".
verbose 0.319 Checking for configuration file "C:\\Users\\chtacklind\\Desktop\\git\\.yarnrc".
verbose 0.326 Checking for configuration file "C:\\Users\\chtacklind\\Desktop\\.yarnrc".
verbose 0.327 Checking for configuration file "C:\\Users\\chtacklind\\.yarnrc".
verbose 0.333 Found configuration file "C:\\Users\\chtacklind\\.yarnrc".
verbose 0.336 Checking for configuration file "C:\\Users\\.yarnrc".
verbose 0.346 current time: 2019-05-12T11:56:12.800Z
[1/4] Resolving packages...
success Already up-to-date.
Done in 0.33s.

Namun menjalankan yarn --check mencoba membangun tetapi selalu gagal.

Terkadang dengan pesan kesalahan yang kacau di bagian akhir:

PS C:\Users\chtacklind\Desktop\git\Project> yarn --check-files --network-concurrency 1 --mutex file:C:/.yarn-mutex --verbose
yarn install v1.10.1
verbose 0.286 Checking for configuration file "C:\\Users\\chtacklind\\Desktop\\git\\Project\\.npmrc".
verbose 0.288 Found configuration file "C:\\Users\\chtacklind\\Desktop\\git\\Project\\.npmrc".
verbose 0.289 Checking for configuration file "C:\\Users\\chtacklind\\.npmrc".
verbose 0.29 Checking for configuration file "C:\\Program Files\\nodejs\\etc\\npmrc".
verbose 0.291 Checking for configuration file "C:\\Users\\chtacklind\\Desktop\\git\\Project\\.npmrc".
verbose 0.292 Found configuration file "C:\\Users\\chtacklind\\Desktop\\git\\Project\\.npmrc".
verbose 0.293 Checking for configuration file "C:\\Users\\chtacklind\\Desktop\\git\\.npmrc".
verbose 0.294 Checking for configuration file "C:\\Users\\chtacklind\\Desktop\\.npmrc".
verbose 0.295 Checking for configuration file "C:\\Users\\chtacklind\\.npmrc".
verbose 0.296 Checking for configuration file "C:\\Users\\.npmrc".
verbose 0.302 Checking for configuration file "C:\\Users\\chtacklind\\Desktop\\git\\Project\\.yarnrc".
verbose 0.304 Found configuration file "C:\\Users\\chtacklind\\Desktop\\git\\Project\\.yarnrc".
verbose 0.305 Checking for configuration file "C:\\Users\\chtacklind\\.yarnrc".
verbose 0.306 Found configuration file "C:\\Users\\chtacklind\\.yarnrc".
verbose 0.307 Checking for configuration file "C:\\Program Files\\nodejs\\etc\\yarnrc".
verbose 0.308 Checking for configuration file "C:\\Users\\chtacklind\\Desktop\\git\\Project\\.yarnrc".
verbose 0.311 Found configuration file "C:\\Users\\chtacklind\\Desktop\\git\\Project\\.yarnrc".
verbose 0.313 Checking for configuration file "C:\\Users\\chtacklind\\Desktop\\git\\.yarnrc".
verbose 0.314 Checking for configuration file "C:\\Users\\chtacklind\\Desktop\\.yarnrc".
verbose 0.315 Checking for configuration file "C:\\Users\\chtacklind\\.yarnrc".
verbose 0.316 Found configuration file "C:\\Users\\chtacklind\\.yarnrc".
verbose 0.317 Checking for configuration file "C:\\Users\\.yarnrc".
verbose 0.32 current time: 2019-05-12T11:56:20.033Z
[1/4] Resolving packages...
[2/4] Fetching packages...
verbose 2.344 Checking for configuration file "C:\\Users\\chtacklind\\AppData\\Local\\Yarn\\Cache\\v2\\.tmp\\ef8122f161347726dd1763e1dca6eeef.d34344cbdf2ff518a03c08fc5f46827c9d66e543.prepare\\.npmrc".
verbose 2.344 Checking for configuration file "C:\\Users\\chtacklind\\.npmrc".
verbose 2.345 Checking for configuration file "C:\\Program Files\\nodejs\\etc\\npmrc".
verbose 2.345 Checking for configuration file "C:\\Users\\chtacklind\\AppData\\Local\\Yarn\\Cache\\v2\\.tmp\\ef8122f161347726dd1763e1dca6eeef.d34344cbdf2ff518a03c08fc5f46827c9d66e543.prepare\\.npmrc".
verbose 2.346 Checking for configuration file "C:\\Users\\chtacklind\\AppData\\Local\\Yarn\\Cache\\v2\\.tmp\\.npmrc".
verbose 2.346 Checking for configuration file "C:\\Users\\chtacklind\\AppData\\Local\\Yarn\\Cache\\v2\\.npmrc".
verbose 2.346 Checking for configuration file "C:\\Users\\chtacklind\\AppData\\Local\\Yarn\\Cache\\.npmrc".
verbose 2.346 Checking for configuration file "C:\\Users\\chtacklind\\AppData\\Local\\Yarn\\.npmrc".
verbose 2.347 Checking for configuration file "C:\\Users\\chtacklind\\AppData\\Local\\.npmrc".
verbose 2.347 Checking for configuration file "C:\\Users\\chtacklind\\AppData\\.npmrc".
verbose 2.347 Checking for configuration file "C:\\Users\\chtacklind\\.npmrc".
verbose 2.348 Checking for configuration file "C:\\Users\\.npmrc".
verbose 2.348 Checking for configuration file "C:\\Users\\chtacklind\\AppData\\Local\\Yarn\\Cache\\v2\\.tmp\\ef8122f161347726dd1763e1dca6eeef.d34344cbdf2ff518a03c08fc5f46827c9d66e543.prepare\\.yarnrc".
verbose 2.349 Checking for configuration file "C:\\Users\\chtacklind\\.yarnrc".
verbose 2.35 Found configuration file "C:\\Users\\chtacklind\\.yarnrc".
verbose 2.351 Checking for configuration file "C:\\Program Files\\nodejs\\etc\\yarnrc".
verbose 2.352 Checking for configuration file "C:\\Users\\chtacklind\\AppData\\Local\\Yarn\\Cache\\v2\\.tmp\\ef8122f161347726dd1763e1dca6eeef.d34344cbdf2ff518a03c08fc5f46827c9d66e543.prepare\\.yarnrc".
verbose 2.353 Checking for configuration file "C:\\Users\\chtacklind\\AppData\\Local\\Yarn\\Cache\\v2\\.tmp\\.yarnrc".
verbose 2.358 Checking for configuration file "C:\\Users\\chtacklind\\AppData\\Local\\Yarn\\Cache\\v2\\.yarnrc".
verbose 2.359 Checking for configuration file "C:\\Users\\chtacklind\\AppData\\Local\\Yarn\\Cache\\.yarnrc".
verbose 2.36 Checking for configuration file "C:\\Users\\chtacklind\\AppData\\Local\\Yarn\\.yarnrc".
verbose 2.361 Checking for configuration file "C:\\Users\\chtacklind\\AppData\\Local\\.yarnrc".
verbose 2.362 Checking for configuration file "C:\\Users\\chtacklind\\AppData\\.yarnrc".
verbose 2.363 Checking for configuration file "C:\\Users\\chtacklind\\.yarnrc".
verbose 2.364 Found configuration file "C:\\Users\\chtacklind\\.yarnrc".
verbose 2.366 Checking for configuration file "C:\\Users\\.yarnrc".
[1/4] Resolving packages...
[2/4] Fetching packages...
verbose 2.541 Performing "GET" request to "https://registry.yarnpkg.com/typescript/-/typescript-3.3.3333.tgz".
verbose 3.263 Checking for configuration file "C:\\Users\\chtacklind\\AppData\\Local\\Yarn\\Cache\\v2\\.tmp\\6621674c4e43b664dde14df71eaf0cc8.09d44d8abc94f728f1c5ea93c22fe9b4f87d9076.prepare\\.npmrc".
verbose 3.264 Checking for configuration file "C:\\Users\\chtacklind\\.npmrc".
verbose 3.265 Checking for configuration file "C:\\Program Files\\nodejs\\etc\\npmrc".
verbose 3.266 Checking for configuration file "C:\\Users\\chtacklind\\AppData\\Local\\Yarn\\Cache\\v2\\.tmp\\6621674c4e43b664dde14df71eaf0cc8.09d44d8abc94f728f1c5ea93c22fe9b4f87d9076.prepare\\.npmrc".
verbose 3.268 Checking for configuration file "C:\\Users\\chtacklind\\AppData\\Local\\Yarn\\Cache\\v2\\.tmp\\.npmrc".
verbose 3.27 Checking for configuration file "C:\\Users\\chtacklind\\AppData\\Local\\Yarn\\Cache\\v2\\.npmrc".
verbose 3.271 Checking for configuration file "C:\\Users\\chtacklind\\AppData\\Local\\Yarn\\Cache\\.npmrc".
verbose 3.273 Checking for configuration file "C:\\Users\\chtacklind\\AppData\\Local\\Yarn\\.npmrc".
verbose 3.278 Checking for configuration file "C:\\Users\\chtacklind\\AppData\\Local\\.npmrc".
verbose 3.279 Checking for configuration file "C:\\Users\\chtacklind\\AppData\\.npmrc".
verbose 3.28 Checking for configuration file "C:\\Users\\chtacklind\\.npmrc".
verbose 3.281 Checking for configuration file "C:\\Users\\.npmrc".
verbose 3.283 Checking for configuration file "C:\\Users\\chtacklind\\AppData\\Local\\Yarn\\Cache\\v2\\.tmp\\6621674c4e43b664dde14df71eaf0cc8.09d44d8abc94f728f1c5ea93c22fe9b4f87d9076.prepare\\.yarnrc".
verbose 3.285 Checking for configuration file "C:\\Users\\chtacklind\\.yarnrc".
verbose 5.007 Error: https://registry.yarnpkg.com/typescript/-/typescript-3.3.3333.tgz: Extracting tar content of undefined failed, the file appears to be corrupt: "ENOENT: no such file or directory, stat 'C:\\Users\\chtacklind\\AppData\\Local\\Yarn\\Cache\\v2\\npm-typescript-3.3.3333-171b2c5af66c59e9431199117a3bcadc66fdcfd6\\lib\\tsserver.js'"nd\\AppData\\Local\\Yarn\\Cache\\v2\\.tmp\\6621674c4e43b664dde14df71eaf0cc
    at MessageError.ExtendableBuiltin (C:\Program Files (x86)\Yarn\lib\cli.js:243:66)
    at new MessageError (C:\Program Files (x86)\Yarn\lib\cli.js:272:123)pData\\Local\\Yarn\\Cache\\v2\\.tmp\\.yarnrc".
    at Extract.<anonymous> (C:\Program Files (x86)\Yarn\lib\cli.js:56849:14)a\\Local\\Yarn\\Cache\\v2\\.yarnrc".
    at Extract.emit (events.js:194:15)on file "C:\\Users\\chtacklind\\AppData\\Local\\Yarn\\Cache\\.yarnrc".
    at Extract.module.exports.Extract.destroy (C:\Program Files (x86)\Yarn\lib\cli.js:131115:17)nrc".
    at onunlock (C:\Program Files (x86)\Yarn\lib\cli.js:130992:26)nd\\AppData\\Local\\.yarnrc".
    at C:\Program Files (x86)\Yarn\lib\cli.js:43373:25rs\\chtacklind\\AppData\\.yarnrc".
    at C:\Program Files (x86)\Yarn\lib\cli.js:43339:23rs\\chtacklind\\.yarnrc".
    at C:\Program Files (x86)\Yarn\lib\cli.js:56799:13acklind\\.yarnrc".
    at FSReqWrap.oncomplete (fs.js:153:21)ile "C:\\Users\\.yarnrc".
error https://registry.yarnpkg.com/typescript/-/typescript-3.3.3333.tgz: Extracting tar content of undefined failed, the file appears to be corrupt: "ENOENT: no such file or directory, stat 'C:\\Users\\chtacklind\\AppData\\Local\\Yarn\\Cache\\v2\\npm-typescript-3.3.3333-171b2c5af66c59e9431199117a3bcadc66fdcfd6\\lib\\tsserver.js'"
info Visit https://yarnpkg.com/en/docs/cli/install for documentation about this command.
PS C:\Users\chtacklind\Desktop\git\Project>

Terkadang dengan kesalahan yang berbeda:

...
[2/4] Fetching packages...
verbose 2.635 Performing "GET" request to "https://registry.yarnpkg.com/typescript/-/typescript-3.3.3333.tgz".
verbose 3.465 Checking for configuration file "C:\\Users\\chtacklind\\AppData\\Local\\Yarn\\Cache\\v2\\.tmp\\6621674c4e43b664dde14df71eaf0cc8.09d44d8abc94f728f1c5ea93c22fe9b4f87d9076.prepare\\.npmrc".
verbose 3.466 Checking for configuration file "C:\\Users\\chtacklind\\.npmrc".
verbose 3.467 Checking for configuration file "C:\\Program Files\\nodejs\\etc\\npmrc".
verbose 3.468 Checking for configuration file "C:\\Users\\chtacklind\\AppData\\Local\\Yarn\\Cache\\v2\\.tmp\\6621674c4e43b664dde14df71eaf0cc8.09d44d8abc94f728f1c5ea93c22fe9b4f87d9076.prepare\\.npmrc".
verbose 3.469 Checking for configuration file "C:\\Users\\chtacklind\\AppData\\Local\\Yarn\\Cache\\v2\\.tmp\\.npmrc".
verbose 3.47 Checking for configuration file "C:\\Users\\chtacklind\\AppData\\Local\\Yarn\\Cache\\v2\\.npmrc".
verbose 3.471 Checking for configuration file "C:\\Users\\chtacklind\\AppData\\Local\\Yarn\\Cache\\.npmrc".
verbose 3.473 Checking for configuration file "C:\\Users\\chtacklind\\AppData\\Local\\Yarn\\.npmrc".
verbose 3.474 Checking for configuration file "C:\\Users\\chtacklind\\AppData\\Local\\.npmrc".
verbose 3.48 Checking for configuration file "C:\\Users\\chtacklind\\AppData\\.npmrc".
verbose 3.481 Checking for configuration file "C:\\Users\\chtacklind\\.npmrc".
verbose 3.482 Checking for configuration file "C:\\Users\\.npmrc".
verbose 3.483 Checking for configuration file "C:\\Users\\chtacklind\\AppData\\Local\\Yarn\\Cache\\v2\\.tmp\\6621674c4e43b664dde14df71eaf0cc8.09d44d8abc94f728f1c5ea93c22fe9b4f87d9076.prepare\\.yarnrc".
verbose 3.485 Checking for configuration file "C:\\Users\\chtacklind\\.yarnrc".
verbose 3.486 Found configuration file "C:\\Users\\chtacklind\\.yarnrc".
verbose 3.49 Checking for configuration file "C:\\Program Files\\nodejs\\etc\\yarnrc".
verbose 3.492 Checking for configuration file "C:\\Users\\chtacklind\\AppData\\Local\\Yarn\\Cache\\v2\\.tmp\\6621674c4e43b664dde14df71eaf0cc8.09d44d8abc94f728f1c5ea93c22fe9b4f87d9076.prepare\\.yarnrc".
verbose 3.493 Checking for configuration file "C:\\Users\\chtacklind\\AppData\\Local\\Yarn\\Cache\\v2\\.tmp\\.yarnrc".
verbose 3.494 Checking for configuration file "C:\\Users\\chtacklind\\AppData\\Local\\Yarn\\Cache\\v2\\.yarnrc".
verbose 3.495 Checking for configuration file "C:\\Users\\chtacklind\\AppData\\Local\\Yarn\\Cache\\.yarnrc".
verbose 3.496 Checking for configuration file "C:\\Users\\chtacklind\\AppData\\Local\\Yarn\\.yarnrc".
verbose 3.497 Checking for configuration file "C:\\Users\\chtacklind\\AppData\\Local\\.yarnrc".
verbose 3.501 Checking for configuration file "C:\\Users\\chtacklind\\AppData\\.yarnrc".
verbose 3.503 Checking for configuration file "C:\\Users\\chtacklind\\.yarnrc".
verbose 3.504 Found configuration file "C:\\Users\\chtacklind\\.yarnrc".
verbose 3.505 Checking for configuration file "C:\\Users\\.yarnrc".
[1/4] Resolving packages...
[2/4] Fetching packages...
verbose 4.608 Error: EPERM: operation not permitted, unlink 'C:\Users\chtacklind\AppData\Local\Yarn\Cache\v2\npm-typescript-3.3.3333-171b2c5af66c59e9431199117a3bcadc66fdcfd6\.yarn-tarball.tgz'
error An unexpected error occurred: "EPERM: operation not permitted, unlink 'C:\\Users\\chtacklind\\AppData\\Local\\Yarn\\Cache\\v2\\npm-typescript-3.3.3333-171b2c5af66c59e9431199117a3bcadc66fdcfd6\\.yarn-tarball.tgz'".
info If you think this is a bug, please open a bug report with the information provided in "C:\\Users\\chtacklind\\Desktop\\git\\Project\\yarn-error.log".
info Visit https://yarnpkg.com/en/docs/cli/install for documentation about this command.
PS C:\Users\chtacklind\Desktop\git\Project>

Perhatikan bahwa dua proses benang sedang berjalan meskipun saya memiliki --mutex ditentukan.

Catatan, paket ini memiliki ketergantungan git yang memiliki langkah tsc prepare yang perlu dilakukan. Paket itu juga memiliki ketergantungan git yang membutuhkan proses yang sama. Jelas bahwa benang mencoba membuka paket yang sama ke tempat yang sama dan kami mendapatkan kondisi balapan.

Mengapa benang berjalan beberapa kali bahkan ketika disuruh tidak?

Sebagai pembaruan, menggunakan yarn install --network-concurrency 1 --mutex network tampaknya berfungsi setiap kali menggunakan satu atau opsi lain cenderung berhasil hanya sebagian waktu.

Jadi apa resolusi untuk masalah ini?
Saya menggunakan benang 1.16 di Ubuntu Linux 18.04
Dan saya masih mendapatkan pesan kesalahan ini:

error Terjadi error yang tidak terduga: "ENOENT: tidak ada file atau direktori seperti itu, lstat '/ home / user / workspace / project / packages / components / node_modules / source-map-support'".

Perintah saya adalah:

yarn install --check-files --frozen-lockfile --network-concurrency 1

Dan saya mendapatkan kesalahan ini sekali dalam dua kali: ((
PS: Saya bekerja di monorepo jadi saya mengaktifkan ruang kerja benang
PPS:
Aku sudah mengecek ulang
Menambahkan file --mutex atau jaringan --mutex tidak membantu.

Satu-satunya solusi yang dapat saya konfirmasikan yang berfungsi adalah memasukkan skrip

until
    yarn install --check-files --frozen-lockfile;
do
    echo "Surprise, surprise. Let's try again..."
done

:(

Fwiw, saya dapat beralih ke npm dengan tidak melakukan apa pun selain mencari / mengganti yarn dengan npm , menggunakan synp untuk mengonversi yarn.lock menjadi package-lock.json , dan menjalankan npm install . Saya pikir ini akan menjadi proses yang menyakitkan, tetapi npm telah berkembang pesat dan hanya membutuhkan waktu sekitar 30 menit dan sekarang berfungsi di mana-mana

Sepertinya masalahnya di sini adalah tidak ada contoh yang benar-benar sederhana tentang apa yang salah. Saya memposting package.json sepele yang dapat diandalkan mereproduksi masalah bagi saya tetapi paket yang disertakan agak rumit.

Saya menduga bahwa masalahnya adalah ketika Anda memiliki pohon ketergantungan dengan "daun" / tip bersama yang membutuhkan waktu untuk mengkompilasi / menginstal (mempersiapkan) dan benang mencoba melakukan persiapan ini dua kali, secara bersamaan. Setiap instance "disiapkan" di lokasi bersama yang dapat diprediksi dan keduanya tidak dapat "menulis" ke lokasi yang sama pada waktu yang sama (satu menghapus file sementara yang lain mengharapkannya tetap ada).

Saya bermaksud untuk membuat beberapa bukti sederhana dari paket konsep dengan langkah-langkah "mempersiapkan" yang meningkat untuk menguji teori ini tetapi belum punya waktu. Mungkin orang lain dapat menguji teori ini sebelum saya membahasnya?

Ini terjadi ketika Anda memiliki beberapa contoh benang yang berjalan secara bersamaan. Anda dapat menggunakan opsi --mutex didokumentasikan di sini: https://yarnpkg.com/en/docs/cli/#toc -concurrency-and-mutex

@BYK Sepertinya ada banyak kasus di mana ini bukan masalahnya. Orang lain bahkan mengindikasikan bahwa opsi ini menyebabkan masalah lain bagi mereka.

@cinderblock # 6650 sepertinya kasus tepi dan seharusnya tidak terlalu mempengaruhi penyelesaian masalah ini. Contoh lain yang Anda sebutkan masih thread yang dipicu dalam mode instal selama instalasi lain, yang mungkin merupakan paket bermasalah karena Anda tidak boleh memicu instalasi lain selama instalasi paket Anda. Ini juga dapat dihindari dengan --ignore-scripts yang juga direkomendasikan.

Jika Anda memiliki prospek lain, harap bagikan agar seseorang dapat meluangkan lebih banyak waktu untuk men-debug ini.

@BYK Saya belum melihat siapa pun yang dengan sengaja menggunakan yarn install di dalam skrip install . Apakah Anda melihat ini sepele package.json yang menghasilkan masalah ini? Memang itu sesuatu di paket dependen yang memicu kesalahan ini, dan mungkin mereka memiliki install yang Anda maksud. Namun package.json berfungsi dengan baik dengan npm ...

Terkait, bagaimana / di mana --ignore-scripts direkomendasikan? Banyak paket yang mengandalkan skrip pasca-pemasangan untuk bekerja.

Terkait, bagaimana / di mana --ignore-scripts direkomendasikan? Banyak paket yang mengandalkan skrip pasca-pemasangan untuk bekerja.

Oh, saya baru saja merekomendasikannya di sini dan saya pikir banyak anggota Yarn yang vokal tentang hal ini. 😀 Sebagian besar paket baik-baik saja tetapi memang ada beberapa paket yang mengandalkan scrpits pasca-pemasangan ya.

Apakah Anda melihat package.json sepele ini

Ya, tetapi bahkan file "sepele" package.json dapat menghasilkan pohon ketergantungan yang sangat besar sehingga mengatakan itu sepele, tidak banyak berubah kecuali saya cenderung menafsirkannya dengan salah satu cara berikut:

  • benang terlalu jelek sehingga tidak bisa menangani file _trivial_ package.json ini
  • masalah ini dapat direproduksi dengan file _trivial_ package.json, namun Anda masih tidak bisa / tidak memperbaikinya

di mana tidak ada yang membantu jadi saya cenderung mengabaikan komentar Anda itu.

Untuk masalah sebenarnya, agar benang dapat berjalan dengan mutex, semua contoh benang harus dipanggil dengan bendera --mutex jadi cara terbaik untuk melihat apakah ini memperbaiki masalah adalah menambahkan --install.mutex network ke .yarnrc file (lihat https://yarnpkg.com/en/docs/yarnrc#toc-cli-arguments). Yang mengatakan ini dapat menghasilkan kebuntuan jika penginstalan awal memicu penginstalan lain, di mana penginstalan kedua akan menunggu penginstalan utama selesai dan penginstalan utama akan diblokir di thread yang dipanggil skrip ini untuk selesai, oleh karena itu saya tidak terlalu tahu cara memperbaiki masalah ini selain menerapkan sistem cache thread / proses-aman, yang hampir tidak mungkin dilakukan dengan penguncian primitif node disediakan. Hal terdekat tampaknya seperti paket kunci yang tepat ini tetapi tidak ada dari kita yang punya waktu untuk mencobanya. Saya dapat membantu Anda jika Anda tertarik untuk mencoba menerapkan ini ke dalam kode tulis / baca cache.

@BYK Oh, maaf jika saya tampil seperti itu. Saya belum pernah melihat cara untuk mereproduksi kesalahan dengan andal sebelumnya, meskipun itu masih belum cukup disaring untuk memperbaiki masalah. Itulah seluruh dorongan saya untuk komentar itu.

Maafkan ketekunan saya tetapi saya masih tidak melihat bagaimana opsi mutex adalah solusi. Saya sudah mencoba menjalankan dengan mutex dan masih menjalankan benang secara bersamaan. Mungkin saya membuat kesalahan dalam pengujian saya ? Saya berharap menjalankan yarn --mutex ... akan meneruskan opsi itu ke instance anak (seperti make , misalnya). Saya juga telah mencoba saran Anda untuk menambahkan --install.mutex network ke file .yarnrc tanpa hasil (kesalahan yang sama). --verbose mengkonfirmasi opsi sedang dimuat.

Mungkin kita bisa melihat ini dari arah yang berbeda? Apa benang melakukan npm itu? Mengapa npm tidak mengalami masalah yang sama?

@BYK , menggunakan tanda mutex sama sekali tidak dapat diterima, karena ada bug benang tambahan yang kemudian akan mencegah Anda _ever menjalankan perintah benang lain _... Ini seperti jika solusi Anda untuk "Saya mengunci kunci saya di mobil saya "tadinya," jangan khawatir, saya memikirkannya! Cukup gunakan alat praktis ini untuk membenturkan semua jendela dan kunci pintu Anda, sekarang Anda tidak akan pernah bisa mengunci mobil Anda lagi! " 🙄

Sepele package.json atau tidak, ini adalah masalah besar tanpa solusi atau solusi yang membuat benang benar-benar tidak dapat digunakan untuk banyak orang. Ini harus mendapat perhatian lebih. Apalagi mengingat sudah buka selama _dua tahun_.

@rumahsakit

@BYK , menggunakan bendera mutex sama sekali tidak dapat diterima, karena ada bug benang tambahan yang kemudian akan mencegah Anda untuk mengeksekusi perintah benang lain ...

Saya tidak mengetahui bug seperti itu, dapatkah Anda mengarahkan saya ke bug tersebut jika sudah dilaporkan? Cara kerja --mutex adalah dengan mencegah instance yarn menggunakan mutex yang sama agar tidak berjalan, sampai yang pertama selesai. Jadi apa yang Anda katakan (bukan penggambaran Anda) terdengar seperti "berfungsi seperti yang diharapkan" bagi saya.

Sepele package.json atau tidak, ini adalah masalah besar tanpa solusi atau solusi yang membuat benang benar-benar tidak dapat digunakan oleh banyak orang. Ini harus mendapat perhatian lebih. Apalagi mengingat sudah buka selama dua tahun.

Mungkin Anda harus meluangkan waktu sejenak untuk merenungkan kontradiksi internal dari kalimat Anda sendiri: "membuat benang benar-benar tidak dapat digunakan untuk banyak orang" dan "sudah terbuka selama dua tahun". Hanya ada 56 peserta dalam masalah ini, yang mencakup ~ 5 pemelihara benang dan total 138 komentar, kebanyakan dari mereka berputar-putar di sekitar hal yang sama. Ini bukan "banyak orang" ini _some_ orang dan yakin ini penting bagi mereka, tetapi saya melihat tidak ada dari mereka yang menganggap ini penting untuk mengirim satu baris perbaikan kode dan hanya menuntut perbaikan untuk perangkat lunak yang disediakan untuk sepenuhnya bebas untuk mereka.

@bayu_joo

Maafkan ketekunan saya tetapi saya masih tidak melihat bagaimana opsi mutex adalah solusi.

Tidak ada yang bisa dimaafkan mengenai ketekunan, itu sebenarnya untuk dirayakan saat Anda mencoba menyelesaikan masalah :)

Saya berharap running yarn --mutex ... akan meneruskan opsi itu ke instance anak (seperti make, misalnya).

Saya yakin itu tidak diturunkan.

Saya juga mencoba saran Anda untuk menambahkan jaringan --install.mutex ke file .yarnrc saya tidak berhasil (kesalahan yang sama). --verbose mengonfirmasi bahwa opsi sedang dimuat.

Itu cukup menarik. Itu mungkin karena contoh benang baru dipicu dari direktori lain, mengabaikan file .yarnrc . Saya mungkin menyarankan menggunakan file .yarnrc global dengan opsi itu, yang mengatakan saya rasa itu bukan solusi yang tepat. Kami hanya harus mencoba ini untuk melihat apakah itu benar-benar memblokir instalasi seperti yang kami harapkan sebelumnya.

Mungkin kita bisa melihat ini dari arah yang berbeda? Apa benang melakukan npm itu? Mengapa npm tidak mengalami masalah yang sama?

Saya menghargai pemikiran yang beragam, yang mengatakan Yarn dan npm sangat berbeda dalam cara kerjanya, saya rasa ini tidak benar-benar berlaku di sini. Jika kami dapat mengidentifikasi paket mana yang memicu pemasangan benang sebagai bagian dari pemasangannya sendiri, kami dapat menemukan solusi. Mungkin Anda dapat mengganti yarn dapat dieksekusi dengan beberapa skrip bash yang mencatat sumber pemanggilan, cwd dan semua argumen yang diteruskan dan kemudian menjalankan benang seperti biasa untuk mendapatkan informasi debug yang berguna dan melanjutkan dari sana?

Solusi pamungkas adalah implementasi cache yang ramah konkurensi seperti yang saya sebutkan sebelumnya, tetapi dengan lebih banyak informasi debugging, kita mungkin dapat menemukan solusi yang lebih murah.

Terima kasih banyak atas kerja sama Anda dengan @cinderblock ini, sangat kami hargai.

Solusi pamungkas adalah implementasi cache yang ramah konkurensi seperti yang saya sebutkan sebelumnya, tetapi dengan lebih banyak informasi debugging, kita mungkin dapat menemukan solusi yang lebih murah.

Saya kira itu harus memungkinkan untuk menyediakan penanganan konkurensi yang disederhanakan - misalnya jika contoh benang lainnya dipanggil selama langkah pembuatan, harus ada operasi cache yang sangat sedikit dengan proses benang atas. Setidaknya, itulah yang saya harapkan. Memastikan bahwa cache dikosongkan ke disk sebelum menjalankan skrip yang mungkin bisa dilakukan. Tidak yakin, seberapa rumit penerapannya.

@BYK Oh! Saya tidak mempertimbangkan kemungkinan bahwa sub-paket memanggil yarn ... dalam sebuah skrip. Apakah Anda berpikir bahwa alasan npm install tidak gagal adalah karena ketika dependensinya berjalan yarn ... hanya ada satu contoh yang berjalan?

saya berhasil menyelesaikan masalah dengan menjalankan

yarn cache clean
rm ./yarn.lock
yarn install

Proses ini, bagaimanapun, memakan waktu lama, karena itu mengunduh semua paket lagi karena Anda a) tidak memiliki cache lagi dan file kunci Anda telah dihapus.

Ini mungkin dapat diselesaikan pada mesin lokal Anda, tetapi masalah dengan benang tetap ada jika digunakan pada bitrise. Ini adalah gambar yang bersih, dari awal. Konkurensi jaringan diperlukan dalam kasus apa pun, bahkan ketika proses benang tunggal sedang berjalan.

@Yuk

Hanya ada 56 peserta dalam masalah ini, yang mencakup ~ 5 pemelihara benang dan total 138 komentar, kebanyakan dari mereka berputar-putar di sekitar hal yang sama.

Sepertinya angka yang cukup tinggi untuk repo ini. Ini adalah total komentar tertinggi di antara semua masalah terbuka dan tertutup, dan itu di antara jumlah peserta tertinggi.

Terlebih lagi, saat meneliti (mungkin) masalah terkait, saya melihat beberapa orang dengan masalah yang mungkin terkait. Hal yang disayangkan adalah banyak dari orang-orang ini menyerah pada benang secara keseluruhan, atau menelan biaya untuk melakukan --network-cocurrency 1 setiap kali file kunci benang berubah. Itulah yang saya lakukan untuk salah satu proyek saya sampai akhirnya saya tahu bahwa itu adalah sub-skrip.

Ini bukan "banyak orang" ini adalah beberapa orang dan yakin ini penting bagi mereka tetapi saya melihat tidak ada dari mereka yang menganggap ini penting untuk mengirim satu baris perbaikan kode dan hanya menuntut perbaikan untuk perangkat lunak yang disediakan untuk sepenuhnya bebas untuk mereka.

Benang bukanlah jenis proyek yang bisa dilakukan orang dengan mudah. Ini adalah sistem kompleks yang melakukan banyak hal dengan cara asinkron, yang berarti Anda tidak bisa begitu saja membuka debugger dan berjalan menumpuk untuk melihat apa yang terjadi. Dengan demikian, tidak mudah untuk memahami basis kode ini, dan bahkan lebih sulit untuk memodifikasinya. Sial, pada titik ini saya sudah menghabiskan beberapa hari waktu kumulatif membaca kode, dan saya masih merasa tidak cukup percaya diri untuk mengirimkan bahkan tambalan sederhana dengan tes yang relevan. Mengingat bahwa saya memiliki pengalaman lebih dari dua dekade, dan membaca kode adalah salah satu spesialisasi saya, saya tidak akan memberikan kesempatan terbesar bagi pengembang rata-rata.

Dengan kata lain, apa yang mungkin merupakan perbaikan satu baris yang cepat dan sederhana bagi Anda bisa menjadi proyek multi-hari yang besar bagi seseorang yang tidak terbiasa dengan cara kerja bagian dalam proyek tersebut. Ini sebelum saya menyebutkan kebijakan implisit yang ada di berbagai komunitas. Saya memiliki setidaknya beberapa PR yang ditolak di berbagai proyek open source karena saya tidak mengikuti beberapa protokol, atau menulis tes yang benar, mematuhi spesifikasi yang tepat, atau bahkan hanya untuk memperbaiki tidak sampai dengan beberapa standar pengkodean yang tidak berdokumen. Kontribusi orang luar dapat menjadi tantangan yang berarti untuk proyek besar.

Jika ini benar-benar merupakan perbaikan satu baris untuk Anda, bukankah lebih cepat menulis perbaikan itu daripada menulis posting panjang yang mengkritik orang lain karena tidak melakukannya?

Jika kami dapat mengidentifikasi paket mana yang memicu pemasangan benang sebagai bagian dari pemasangannya sendiri, kami dapat menemukan solusi.

Saya memiliki contoh paket yang menunjukkan perilaku semacam ini di sini , meskipun saya tidak melihat yarn install di sana (kecuali bob build melakukannya, meskipun itu juga menunjukkan masalah ini saat perintahnya adalah "prepare": "node ./scripts/generate-mappings", ).

Solusi pamungkas adalah implementasi cache yang ramah konkurensi seperti yang saya sebutkan sebelumnya, tetapi dengan lebih banyak informasi debugging, kita mungkin dapat menemukan solusi yang lebih murah.

Titik awal yang bagus akan menjadi peringatan jika situasi seperti itu terdeteksi (dengan asumsi hal itu dapat dideteksi). Cache ramah konkurensi tampaknya harus menjadi upaya terkonsentrasi oleh setidaknya satu anggota komunitas benang.

Pembaruan menemukan solusi yang berhasil .... git submodule dan kemudian lokasi paket menjadi folder lokal. Tidak ideal tapi berhasil.

Kami juga mengalami masalah ini di CircleCI dan ini adalah masalah besar. Masalahnya tampaknya terkait dengan penggunaan paket yang dihosting di github.com dan mungkin Linux (berfungsi di OSX). mutex dan network-concurrency opsi tidak melakukan apa pun.

"my-js-lib": " ssh: //[email protected] : dgobaud / my-js-ib # 1.0.0"

jika saya menghapus itu bekerja di CircleCI. Secara lokal ia bekerja dengannya di OSX dengan benang 1.17.0.

Tetapi itu tidak akan bekerja pada CircleCI dengan node 12.8.1 dan benang 1.17.3 (gambar lingkaran circleci / node: terbaru)

Atau dengan Node 8.15.0 dan benang 1.12.3 (gambar lingkaran circleci / node: 8.15.0)

#!/bin/bash -eo pipefail
yarn install --mutex network --network-concurrency 1
yarn install v1.12.3
[1/4] Resolving packages...
warning Resolution field "[email protected]" is incompatible with requested version "mixin-deep@^1.2.0"
warning Resolution field "[email protected]" is incompatible with requested version "set-value@^2.0.0"
warning Resolution field "[email protected]" is incompatible with requested version "set-value@^0.4.3"
[2/4] Fetching packages...
info [email protected]: The platform "linux" is incompatible with this module.
info "[email protected]" is an optional dependency and failed compatibility check. Excluding it from installation.
[3/4] Linking dependencies...
[4/4] Building fresh packages...
$ cd functions && yarn install
yarn install v1.12.3
[1/5] Validating package.json...
[2/5] Resolving packages...
warning Resolution field "[email protected]" is incompatible with requested version "mixin-deep@^1.2.0"
warning Resolution field "[email protected]" is incompatible with requested version "set-value@^2.0.0"
warning Resolution field "[email protected]" is incompatible with requested version "set-value@^2.0.1"
[3/5] Fetching packages...
[1/5] Validating package.json...
[2/5] Resolving packages...
[3/5] Fetching packages...
error https://registry.yarnpkg.com/lodash/-/lodash-4.17.15.tgz: Extracting tar content of undefined failed, the file appears to be corrupt: "ENOENT: no such file or directory, chmod '/home/circleci/.cache/yarn/v4/npm-lodash-4.17.15-b447f6670a0455bbfeedd11392eff330ea097548/node_modules/lodash/_arrayReduceRight.js'"
info Visit https://yarnpkg.com/en/docs/cli/install for documentation about this command.
info There appears to be trouble with your network connection. Retrying...
error Command failed with exit code 1.
info Visit https://yarnpkg.com/en/docs/cli/install for documentation about this command.
Exited with code 1

--network-concurrency 1 berhasil, --network-concurrency 8 gagal, pada circleCI / node: 10

Bolehkah seseorang membantu saya memahami mengapa Yarn perlu gagal di EEXIST dan EOENT?

Dalam kasus EEXIST saya mengharapkan Yarn untuk memperingatkan tentang hal itu, dan kemudian menimpa file tersebut.
Dalam kasus EOENT, saya berharap Yarn membuat folder yang hilang (yang biasanya menjadi penyebab masalah).

Saya mengerti ini mungkin memiliki efek samping, jadi mungkin perilaku ini dapat dibuat lebih ketat dengan sebuah bendera (atau sebaliknya).

Tapi apa gunanya menyimpan kesalahan ini? Mereka tidak berguna bagi siapa pun.

@BYK Maaf, saya baru melihat komentar Anda

Saya tidak mengetahui bug seperti itu, dapatkah Anda mengarahkan saya ke bug tersebut jika sudah dilaporkan? Cara kerja --mutex adalah dengan mencegah instance yarn menggunakan mutex yang sama agar tidak berjalan, sampai yang pertama selesai. Jadi apa yang Anda katakan (bukan penggambaran Anda) terdengar seperti "berfungsi seperti yang diharapkan" bagi saya.

Ini adalah bugnya: https://github.com/yarnpkg/yarn/issues/6650 seperti yang disebutkan di https://github.com/yarnpkg/yarn/issues/2629#issuecomment -481297806 (yang saya yakini sekarang terkubur di bawah "tampilkan lebih banyak riwayat" di utas ini)

Hanya ada 56 peserta dalam masalah ini

Yah, saya rasa, itu poin yang adil

Bug ini masih dalam benang v1.19.1. Saya tidak mengerti mengapa Tim Yarn tidak memperbaiki bug yang sangat mengganggu ini.
ini .yarnrc dan itu tidak membantu:

save-prefix ""
--install.check-files true
--add.check-files true
--remove.check-files true
--install.frozen-lockfile true
--add.frozen-lockfile true
--remove.frozen-lockfile true
--install.mutex network
--install.mutex file

Apa yang baru saya temukan bahwa menjalankan npx lerna clean && ./yarn-install-in-loop.sh membantu.
Membersihkan (menghapus) semua direktori node_modules di monorepo saya tidak membantu.

@gitowiec dapat mengonfirmasi. Pemanggilan yarn install saya dalam container adalah data balapan sesuatu pada sistem file, dan setiap upaya untuk membatasi yarn ke satu file .yarnrc gagal. Saya menyerah dan kembali ke npm .

Saya telah menemukan bahwa masalah saya adalah memiliki dependensi paket dari repositori git melalui beberapa level (mis. My package -> git package -> git package -> git package). Juga, cache selama instalasi tidak bekerja dengan baik dibandingkan dengan npm (npm hanya checkout sekali, tapi benang checkout beberapa kali paket yang sama selama instalasi yang sama).
Saya pindah kembali ke npm. Ini bekerja dengan baik sejak v6.

A disebutkan di atas, masalah ini masih ada. Inilah yang telah kami tambahkan ke config.yml untuk circleci agar pengujian kami berhasil:
- run: name: Yarn Install source ~/setyarnpath.sh i=5; until yarn; do echo "Yarn failed. Retrying..."; ((i--)); if [[ "$i" == '0' ]]; then break; fi; done

Saya mengalami masalah yang sama. Menggunakan macOS, dan docker-compose, dengan volume host [1] yang memiliki kode DAN node_modules saya di dalamnya.

Node_modules diubah menjadi volume anonim , tapi saya kira volume bernama juga akan berfungsi. Dan tampaknya berfungsi dengan baik sekarang, dan juga menginstal dependensi JAUH lebih cepat.

File pembuat galangan saya diubah dari:

services:
  ...
  web:
    build: .
    volumes:
      - .:/home/example
    ports:
      - "3000:3000"
    ...

Untuk:

services:
  ...
  web:
    build: .
    volumes:
      - .:/home/example
      - /home/example/node_modules
    ports:
      - "3000:3000"
    ...

[1] https://success.docker.com/article/different-types-of-volumes

Saya melihat kesalahan baru dengan yarn baru-baru ini yang saya yakini merupakan gejala baru dari masalah ini.

yarn stdout [1/4] Resolving packages...
yarn stdout [2/4] Fetching packages...
yarn stderr error https://registry.yarnpkg.com/prettier/-/prettier-1.19.1.tgz: Extracting tar content of undefined failed, the file appears to be corrupt: "EEXIST: file already exists, mkdir '/home/pi/.cache/yarn/v6/npm-prettier-1.19.1-f7d7f5ff8a9cd872a7be4ca142095956a60797cb-integrity/node_modules/prettier'"
yarn stdout info Visit https://yarnpkg.com/en/docs/cli/install for documentation about this command.
yarn stderr Process stalled
yarn stderr Active handles:
yarn stderr   - Socket
yarn stderr   - Socket
yarn stderr   - Socket
yarn stderr   - TLSSocket
yarn stderr   - TLSSocket
yarn stderr   - TLSSocket

Catatan: yarn stderr/out adalah awalan yang diberikan program saya ke keluaran benang di env saya

Saya yakin ini adalah masalah yang sama karena proyek saya dapat secara konsisten menciptakan gejala lama dengan cara yang sama seperti gejala baru ini terjadi (dan gejala lama telah berhenti).

Sebagai referensi, ini terjadi saat penginstalan setelah saya menghapus cache benang dan node_modules atau memperbarui satu ketergantungan paket git tertentu.

Ketergantungan paket tertentu adalah ketergantungan dari paket git lain yang sebenarnya saya andalkan (keduanya memiliki langkah serupa prepare yang bergantung pada TypeScript). Jika saya membuat perubahan pada ketergantungan ini pada #master dan melakukan yarn upgrade --latest , masalah terjadi (dan pada yarn install .

Ketika saya memperbarui sub paket itu secara manual (ke folder node_modules benar-benar terpisah!), yarn install berfungsi kembali. Ini membuat saya berpikir bahwa benang secara tidak sengaja menggunakan cache oleh dua proses secara bersamaan dan ini menyebabkan masalah yang kita lihat dalam masalah ini.

Ini terjadi pada saya saat menggunakan 2 atau lebih paket yang diinstal oleh ketergantungan git. Entah bagaimana ada beberapa proses ke paket yang sama yang menjalankan skrip prepare . Juga, itu mulai gagal dengan npm juga di rilis terakhir.

Dependencies:
A -> B & C (both by git, with prepare script)
B -> C (by git, with prepare script)

Manfaat ini telah terbuka selama bertahun-tahun & masih terjadi dengan benang 1.22.0.
Saya hanya menghabiskan waktu berjam-jam mencoba men-debug apa yang terjadi tanpa keberuntungan, dan sepertinya saya bukan satu-satunya.

Satu-satunya solusi yang saya lihat sekarang adalah beralih ke npm.

@gregory Dalam kasus saya, saya ingat pada bulan Juni 2019, benang akan selalu menginstal paket yang dibutuhkan, bahkan jika perlu 2-4 pengulangan untuk sampai ke sana. Lebih jauh, bahkan dengan pengulangan ini, benang masih lebih cepat dari npm.

Saya akan menjalankan ulang sampai benang selesai menggunakan perintah seperti ini:

while ! yarn install; do echo --- ; done

Perbaikan mudah bagi kami adalah menerbitkan paket pribadi dan menggunakannya sebagai pengganti tautan git. Masih menyebalkan

while ! yarn install; do echo --- ; done

Sangat menyedihkan bahwa satu-satunya perbaikan adalah kekerasan ... sulit dipercaya bahwa belum ada yang memperbaikinya.

cc @ arcan

Mencoba dua pemasangan benang berikutnya, berhasil pertama kali, lalu gagal.

Manajemen ketergantungan yang cepat, andal, dan aman.

Itu tidak bisa diandalkan.
`` `` [3/5] Mengambil paket ...
kesalahan https://registry.yarnpkg.com/lz4/-/lz4-0.6.3.tgz: Mengekstrak konten tar yang tidak ditentukan gagal, file tampaknya rusak: "ENOENT: tidak ada file atau direktori seperti itu, tautan '/ aplikasi /.cache/yarn/v6/npm-lz4-0.6.3-78df6bb69a36d7db6c2e849494876ba6e38e66d6-integrity/node_modules/lz4/build/Release/obj.target/build/Release/lz4.node '->' /yarappn/ /v6/npm-lz4-0.6.3-78
df6bb69a36d7db6c2e849494876ba6e38e66d6-integrity / node_modules / lz4 / build / Release / obj.target / lz4.node '"
info Kunjungi https://yarnpkg.com/en/docs/cli/install untuk dokumentasi tentang perintah ini.
[1/5] Memvalidasi package.json ...
[2/5] Menyelesaikan paket ...
[3/5] Mengambil paket ...
info Tampaknya ada masalah dengan koneksi jaringan Anda. Mencoba lagi ...
info [email protected] : Platform "linux" tidak kompatibel dengan modul ini.
info " [email protected] " adalah ketergantungan opsional dan pemeriksaan kompatibilitas gagal. Mengecualikannya dari penginstalan.
info [email protected] : Platform "linux" tidak kompatibel dengan modul ini.
info " [email protected] " adalah ketergantungan opsional dan pemeriksaan kompatibilitas gagal. Mengecualikannya dari penginstalan.
[4/5] Menautkan dependensi ...
[5/5] Membuat paket baru ...
$ npm jalankan persiapkan: mjs && npm run persiapkan: js

[email protected] siapkan: mjs /app/.cache/yarn/v6/.tmp/43563e016bb56318ebd76037a0f6ce2f.73d5f4dbffab6f6a27f26c6611e32662c98c2891.prepare
BABEL_ESM = 1 babel src -d. --keep-file-extension

Berhasil mengumpulkan 39 file dengan Babel.

[email protected] siapkan: js /app/.cache/yarn/v6/.tmp/43563e016bb56318ebd76037a0f6ce2f.73d5f4dbffab6f6a27f26c6611e32662c98c2891.prepare
babel src -d.

Berhasil mengumpulkan 39 file dengan Babel.


[3/5] Mengambil paket ...
kesalahan https://registry.yarnpkg.com/lz4/-/lz4-0.6.3.tgz: Mengekstrak konten tar yang tidak ditentukan gagal, file tampaknya rusak: "ENOENT: tidak ada file atau direktori seperti itu, tautan '/ aplikasi /.cache/yarn/v6/npm-lz4-0.6.3-78df6bb69a36d7db6c2e849494876ba6e38e66d6-integrity/node_modules/lz4/build/Release/obj.target/build/Release/lz4.node '->' /yarappn/ /v6/npm-lz4-0.6.3-78
df6bb69a36d7db6c2e849494876ba6e38e66d6-integrity / node_modules / lz4 / build / Release / obj.target / lz4.node '"
info Kunjungi https://yarnpkg.com/en/docs/cli/install untuk dokumentasi tentang perintah ini.
info Tampaknya ada masalah dengan koneksi jaringan Anda. Mencoba lagi ...

``

Siapapun tahu mengapa benang menelepon

error https://registry.yarnpkg.com/lz4/-/lz4-0.6.3.tgz: Extracting tar content of undefined failed, the file appears to be corrupt: "ENOENT: no such file or directory, link '/app/.cache/yarn/v6/npm-lz4-0.6.3-78df6bb69a36d7db6c2e849494876ba6e38e66d6-integrity/node_modules/lz4/build/Release/obj.target/build/Release/lz4.node' -> '/app/.cache/yarn/v6/npm-lz4-0.6.3-
  df6bb69a36d7db6c2e849494876ba6e38e66d6-integrity/node_modules/lz4/build/Release/obj.target/lz4.node'"

ketika jalan yang benar seharusnya:

/app/.cache/yarn/v6/npm-lz4-0.6.3-78df6bb69a36d7db6c2e849494876ba6e38e66d6-integrity/node_modules/lz4/build/Release/lz4.node

sepertinya benang menambahkan obj.target/build/Release/ untuk beberapa alasan. Bisa terkait dengan https://github.com/yarnpkg/yarn/commit/0e7133ca28618513503b4e1d9063f1c18ea318e5

Saya mendapatkan kesalahan yang sama membuat frustrasi dan sulit untuk di-debug. Masalah dalam kasus saya tampaknya adalah perilaku yarn workspace disebabkan oleh versi berbeda dari ketergantungan yang sama dalam paket yang berbeda (khususnya ava versi 2 dan 3). Hanya setelah saya meningkatkan semua kemunculan ava ke yang terbaru, saya berhenti mendapatkan kesalahan ini.

Saya menjalankan 1.22.4 dan terjebak pada masalah ini selama berjam-jam. Monorepo kami memiliki beberapa modul yang menggunakan paket yang sama. Akhirnya diurutkan dengan menerapkan yang berikut:
1) Pastikan Anda menggunakan versi paket yang sama untuk semua modul - ini pasti akan menyebabkan crash, bahkan pada devDependencies .
2) Sematkan semua versi di monorepo di semua file package.json .

Dapat mengonfirmasi masih masalah pada 1.22.4 . Awalnya, mocha , dan setelah memastikan semua paket menggunakan versi yang sama, sekarang saya mendapatkan kesalahan yang dihasilkan dari camelcase yang bahkan tidak saya gunakan dalam proyek saya - tampaknya itu dari yargs , mungkin dari Lerna.

error Terjadi error yang tidak terduga: "ENOENT: tidak ada file atau direktori seperti itu, lstat '/ code / project / src / packages / private-package / node_modules / camelcase'".

Bolehkah saya bertanya apakah ada solusi yang terlihat? Kami terus menghapus 20 node_modules dan yarn.lock untuk memperbaikinya.

Bolehkah saya bertanya apakah ada solusi yang terlihat? Kami terus menghapus 20 node_modules dan yarn.lock untuk memperbaikinya.

Saya pribadi sudah beralih ke lerna terkait penanganan ruang kerja.

Cukup yakin bahwa Lerna saat ini hanya lolos ke Yarn.

Saya bisa mengatasi masalah saya dengan menambahkan nohoist config untuk paket Ember - env ​​saya saat ini menggunakan versi Ember yang lebih lama, yang tidak kompatibel dengan ruang kerja.

    "nohoist": [
      "**/ember-package/*ember*",
      "**/ember-package/*ember*/**",
      "**/ember-package/loader.js"
    ]

Saya pikir kami memiliki repro minimal di sini sekarang: https://github.com/yarnpkg/yarn/issues/7212#issuecomment -637978197

Menghapus yarn.lock lalu yarn install berhasil untuk saya

Ada berita disini? Proses CI kami baru saja turun dengan semua jaringan pipa gagal karena kegagalan pemasangan ketergantungan dari benang. Konyol sekali.

Menyetel --network-concurrency tidak memperbaiki apa pun dan pekerjaan dijalankan pada mesin yang bersih (tidak ada node_modules, tidak ada benang .cache).

@cadavre Tidak menjamin apa pun tetapi ini mungkin tidak menjadi masalah di v2, Anda dapat mencobanya dengan

yarn set version 2 && yarn config set nodeLinker node-modules

https://yarnpkg.com/getting-started/install#per -project-install
https://yarnpkg.com/configuration/yarnrc#nodeLinker

Hal ini juga terjadi pada saya, setelah mengupgrade beberapa dependensi vue & firebase saya. Sekarang 100% dapat diulang di mesin CI dan dev saya. Menambahkan --network-concurrency 1 tidak dapat diperbaiki dengan andal. Saya tidak kehabisan ruang disk atau inode. Saya di WSL1. Benang 1.22.4.

Saya memperbaikinya dengan mengubah sementara direktori cache, yang saya hapus setelahnya.

Bagi saya ini adalah build Docker:

RUN yarn install --check-files --cache-folder .ycache && rm -rf .ycache
Apakah halaman ini membantu?
0 / 5 - 0 peringkat