Saya baru-baru ini menemui pepijat benang Selepas mencari, saya mendapati ia wujud selama 6 tahun Apakah jenis masalah ajaib ini? Selepas beberapa analisis dan penyiasatan, saya memberikan 6 penyelesaian. . .
Beberapa projek yang telah saya ambil alih baru-baru ini menggunakan pengurus pakej yarn@v1.22.19
Selepas memasang dependensi, tidak kira sama ada ia berjaya atau tidak, sambungan rangkaian sentiasa muncul. Akan ada masalah dan ia akan tersekat untuk masa yang lama, dan kemudian akan terdapat beberapa baris log tidak normal seperti ini: info There appears to be trouble with your network connection. Retrying...
.
Kadang-kadang sesetengah pakej ajaib (seperti node-sass
) adalah tidak normal dan menyebabkan pemasangan gagal Akibatnya, pemasangan tersekat untuk masa yang lama sebelum kegagalan ditemui, yang sebenarnya mengecewakan. Di samping itu, terdapat berpuluh-puluh item yarn
berkaitan dalam github
gudang issue
, dengan jangka masa 6 tahun dari 2016 hingga 2022. Terdapat pendapat yang berbeza mengenai sebab dan penyelesaiannya. Saya sangat ingin tahu tentang jenis masalah ajaib ini yang tidak dapat diselesaikan selama 6 tahun, jadi saya memutuskan untuk mengetahuinya. [Tutorial berkaitan yang disyorkan: tutorial video nodejs, Video pengaturcaraan]
Apabila anda menghadapi masalah dan ralat yang tidak ada idea, Petua pertama ialah mencarinya. Cari mesej ralat yarn
dalam github
gudang There appears to be trouble with your network connection
Anda boleh melihat bahawa terdapat 1 kod berkaitan dan 91 berkaitan issue
dalam hasil carian. Selepas mencari seketika dalam issue
, saya tidak menemui penyelesaian yang sesuai, jadi saya pergi ke langkah seterusnya: cari kod.
Atas sebab rangkaian, pergi terus ke direktori pemasangan yarn
setempat untuk mencari. Gunakan vscode
untuk membuka direktori pemasangan yarn
(direktori tempatan saya ialah ~/.volta/tools/image/yarn/1.22.19
), dan cari secara global untuk kata kunci There appears to be trouble with your network connection
. Anda boleh melihat bahawa terdapat juga hanya satu hasil dan keseluruhan mesej ralat diberikan kepada pembolehubah offlineRetrying
.
Kata kunci carian globalofflineRetrying
Terdapat 2 hasil kesemuanya, kecuali keputusan dalam langkah sebelumnya, hanya terdapat 1 petikan. Kod di sini terutamanya membuang pengecualian dan cuba semula, dan tiada lagi kata kunci untuk dicungkil. Seterusnya, masukkan proses penyahpepijatan, letakkan titik putus di hadapan baris offlineRetrying
kod dan nyahpepijat untuk melihat mesej ralat dan konteks tertentu.
Memasang kebergantungan memerlukan arahan yang dijalankan. yarn
, Jadi bagaimana untuk menyahpepijatnya? yarn
ialah pakej npm
, yang sebenarnya memanggil node xxx.js
apabila dilaksanakan, dan ini xxx.js
biasanya dikonfigurasikan dalam medan package.json
bin . Seperti yang anda boleh lihat daripada gambar di bawah, fail sepadan yarn
ialah ./bin/yarn.js
, jadi anda boleh menggunakan baris arahan penyahpepijatan ini: node --inspect-brk ~/.volta/tools/image/yarn/1.22.19/bin/yarn.js
. (Untuk nyahpepijat Node.js
, sila rujuk dokumen rasmi)
tempat pertama pembolehubah offlineRetrying
Tambah pernyataan cli.js:66099
debugger sebelum baris kod.
Kemudian kembali ke direktori akar projek perniagaan dan jalankan arahan penyahpepijatan node --inspect-brk ~/.volta/tools/image/yarn/1.22.19/bin/yarn.js
. Pada masa ini, program digantung dan menunggu alat penyahpepijatan disambungkan dan mencetak log berikut:
Kemudian buka chrome
halaman penyahpepijatan terbina dalam chrome://inspect/#devices
, cari Target
dengan laluan fail yang sama, dan klik butang inspect
untuk mula menyahpepijat.
Kemudian chrome
akan membuka tetingkap DevTools
bebas Memandangkan perintah node --inspect-brk
digunakan, DevTools
titik putus automatik berada dalam fail yang sedang dinyahpepijat. kedudukan permulaan, anda perlu menekan F8
untuk melangkau titik putus dan meneruskan pelaksanaan.
Setelah menunggu dalam tempoh yang singkat, DevTools
berhenti pada titik putus yang ditambahkan sebelum ini Anda dapat melihat bahawa ini adalah pengecualian tamat masa dan permintaan yang menyebabkan pengecualian ialah GET: https://yarnpkg.com/latest-version
. Menggunakan curl
untuk meminta pautan ini mengakibatkan tamat masa 210s. Mengakses pautan ini menggunakan proksi boleh berjaya, tetapi permintaan itu diubah hala ke classic.yarnpkg.com/latest-vers…, dan hasil pulangan ialah 1.22.19
.
Masalahnya pada dasarnya jelas sekarang Sebab utamanya ialah permintaan telah tamat masa dan berbilang percubaan semula menyebabkan masalah pada permulaan artikel Anda boleh menggunakan proksi untuk mengelakkan masalah ini. Membosankan jika siasatan berakhir di sini.
Untuk memahami lebih lanjut yarn
mengapa meminta yarnpkg.com/latest-vers… , gunakan ini Pautan adalah carian kata kunci dalam kod dan mendapati rangkaian kata kunci ini: https://yarnpkg.com/latest-version
-> SELF_UPDATE_VERSION_URL
-> ditunjukkan di bawah: _checkUpdate
checkUpdate
fungsi, setiap kali checkUpdate
dilaksanakan Semasa memasang arahan, _checkUpdate
yarnpkg.com/latest-vers…SELF_UPDATE_VERSION_URL
akan diminta untuk menyemak sama ada terdapat versi baharu yang perlu dikemas kini. Walau bagaimanapun, akses pautan ini tamat masa dan akan dicuba semula selepas kegagalan Tamat masa lalai ialah 30s dan bilangan percubaan semula ialah 4, jadi selepas pemasangan selesai, ia masih akan terperangkap selama 120s sebelum program benar-benar tamat. https://yarnpkg.com/latest-version
checkUpdate
yarn
4. Penyelesaian
$ yarn install --proxy "http://{domain}:{port}" --https-proxy "http://{domain}:{port}"
yarn install --proxy "http://10.180.55.191:7890" --https-proxy "http://10.180.55.191:7890"
yang besar telah dipasang terlalu lama dan melebihi tamat masa lalai 30-an, oleh itu, tamat masa rangkaian juga boleh ditukar kepada nilai yang lebih besar untuk mengelakkan ini tidak normal.
yarn install --network-timeout 2000
Penyelesaian idea ini terutamanya datang daripada beberapa syarat penamatan dalam fungsi4.3 Langkau menyemak kemas kini
npm
$ yarn config set disable-self-update-check true$ yarn install
$ yarn config set lastUpdateCheck 1e13 $ yarn install
$ yarn install --non-interactive
yarn
的安装目录注释 checkUpdate
的调用,具体代码行为 cli.js:7261
,修改后长这样:// this.checkUpdate();
checkUpdate
函数的代码...以上主要是分享一些问题分析排查的经验,另外也提供了一些 yarn install
超时异常的解决方案,希望能对前端同学们有所帮助。
在快写完这篇文章的时候,yarnpkg.com/latest-vers… 已经可以正常访问,不知道还会不会有人再遇到这个问题。
另外我在
yarn
的github issue
中回复了以上的解决方案,希望前端同学们少受点折磨,也希望官方早点修复这个6年陈的老Bug。?
更多编程相关知识,请访问:编程教学!!
Atas ialah kandungan terperinci Merekod dan menganalisis pepijat benang yang telah wujud selama 6 tahun. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!