Fixing Golang 1.21.5 error not the empty string
posted at 2024-02-21 • updated at -
Bahasa pemograman Golang memiliki jadwal rilis setiap 6 bulan sekali, dengan penjadwalan 3 bulan untuk development dan 3 bulan untuk testing. Setiap rilisnya, ada perubahan yang perlu di perhatikan. Pada halaman Release History, kita dapat melihat setiap perubahan yang dilakukan.
Issue
GOPROXY list is not the empty string, but contains no entries?
Jika kamu pertama kali menggunakan Golang versi 1.21+ atau kamu melakukan upgrade golang yang kamu gunakan ke versi 1.21+, hal ini mungkin akan terjadi. Sebelumnya saya menggunakan golang versi 1.20, setelah installasi selesai
tidak perlu menambahkan konfigurasi environment lain selain GOPATH
. GOPATH itu juga optional, karena settingan tersebut hanya untuk mengatur project golang dalam satu tempat dan itu memudahkan dalam pengembangan project golang.
Issue ini muncul karena upgrade versi Golang dari 1.20 ke 1.21.5, kenapa ini bisa terjadi sedangkan pada versi sebelumnya tidak terjadi error? Pada perilisan versi 1.21.0 di laman perilisan ataupun blog dari Golang tidak ada secara eksplisit menjelaskan akan perubahan ini. Setelah riset, pembaharuan GOPROXY atau GOSUMDB itu untuk dilakukan untuk menningkatkan keamanan.
GOPROXY
Jika kita balik kebelakang, GOPROXY berfungsi untuk menentukan sumber yang digunakan sebagai referensi dari suatu modul. Golang akan menggunakan sumber yang ditentukan tersebut dan mengunduhnya untuk digunakan oleh modul-modul yang dipanggil. Sebagai developer bisa sangat membantu, developer dapat mengatur sumber yang digunakan dan melakukan kontrol terhadap sumber tersebut. Selain itu GOPROXY juga membantu untuk memastikan modul selalu tersedia walaupun original repositornya dihapus, karena GOPROXY juga punya sistem cache.
Ilustrasi GOPROXY dapat dilihat seperti berikut:
{:.w-auto .md:w-full}
Workaround
Tambahkan env baru untuk GOPROXY
dan GOSUMDB
export GOPROXY=https://proxy.golang.org,direct
export GOSUMDB=sum.golang.org
atau menggunakan go -w
go env -w GOPROXY=https://proxy.golang.org,direct
go env -w GOSUMDB=sum.golang.org