Menyelesaikan Konflik Modul dengan Sub-Modul
Menghadapi konflik dalam kebergantungan modul Go boleh mengecewakan, terutamanya apabila modul peringkat atas dan modulnya sub-modul diimport secara berasingan sebagai versi yang berbeza. Isu ini timbul apabila satu atau lebih kebergantungan merujuk kepada versi modul pra-Go bagi modul atau sub-modul, mengakibatkan pengambilan kedua-dua kebergantungan modul dan sub-modul.
Mengenalpasti Konflik
Dalam contoh yang diberikan, graf pergantungan modul menyerupai yang berikut:
├── main module (github.com/test-org/test-repo) │ ├── github.com/foo/bar v1.0.0 │ └── github.com/raz/mataz v1.0.0 └─────github.com/shared/dependency ├── submodule: github.com/shared/dependency/api └── two downloaded versions: - v1.1.0 (module-less version) - v1.2.0 (Go module version)
Menangani Konflik
Ralat import yang tidak jelas dalam ini kes menunjukkan konflik antara rujukan modul kepada github.com/shared/dependency/api dan import kotak hitam repo github.com/shared/dependency. Untuk menyelesaikan masalah ini, kami perlu menguatkuasakan versi modul dan sub-modul yang konsisten.
Penyelesaian: Menggunakan Arahan ganti
Penyelesaian adalah dengan menambah arahan ganti dalam fail go.mod modul utama. Arahan ini memaksa semua rujukan kepada sub-modul untuk menggunakan versi tertentu. Dalam contoh ini, kami memaksa rujukan untuk menggunakan github.com/shared/dependency v1.2.0, yang merupakan versi yang didayakan modul Go.
replace ( github.com/shared/dependency => github.com/shared/dependency v1.2.0 )
Nota: Penyelesaian ini menganggap bahawa semua kebergantungan masih memerlukan penggunaan versi yang didayakan Go-modul github.com/shared/dependency. Jika ini tidak berlaku, penyelesaian lain mungkin diperlukan, seperti mengubah suai versi pergantungan yang dirujuk atau menggunakan alat pengurusan pergantungan seperti Glide.
Atas ialah kandungan terperinci Bagaimana untuk Menyelesaikan Konflik Modul dengan Sub-Modul Modul Go?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!