versi $ go 1.13.3
Saya memiliki struktur folder sebagai berikut:
GOPATH
+---src
+--- my-api-server
+--- my-auth-server
+--- main.go
+--- my-utils
+--- uuid
+--- uuid.go
my-auth-server
gunakan my-api-server/my-utils/uuid
sebagai ketergantungan
Sekarang, ketika saya menggunakan sistem modul berbasis GOPATH, ini bekerja dengan baik. Tapi ketika menggunakan modul pergi, ketika saya menjalankan go run main.go
di my-auth-server
itu kesalahan kembali:
build command-line-arguments: cannot load my-api-server/my-utils/uuid: malformed module path "my-api-server/my-utils/uuid": missing dot in first path element
Ada ide untuk mengatasi ini?
go
go-modules
Ayush Gupta
sumber
sumber
Jawaban:
The
go.mod
file harus menjadi akar dari proyek Anda (dalam kasus ini,my-api-server/go.mod
).Bagian pertama dari jalur modul harus berupa domain / jalur. Misalnya, jalur lengkap mungkin
github.com/your-github-username/my-api-server
. Kesalahan yang Anda lihat adalah karena bagian pertama bukan domain (dengan tanda titik). Anda tidak harus menerbitkan modul untuk mengembangkannya, tetapi Anda harus menggunakan nama domain yang tepat.Setelah Anda memiliki lintasan modul, Anda dapat mengimpor paket yang terdapat dalam modul itu menggunakan lintasan modul lengkap + "/" + lintasan relatif dari paket tersebut. Sebagai contoh,
Karena
main.go
danuuid
terdapat dalam modul yang sama, Anda tidak perlurequire
pernyataan dalamgo.mod
file untuk menggunakanuuid
paket. Anda dapat mengimpornya seperti paket lain dan akan berfungsi.Saya sarankan menggunakan
go build
dan menjalankan hasil yang dapat dieksekusi daripada menggunakango run
untuk memastikan Anda memasukkan semua file yang Anda butuhkan dalam proses membangun.Lihat https://blog.golang.org/using-go-modules untuk penelusuran cara menggunakan modul Go, termasuk pos kedua dalam seri itu tentang cara mengonversi proyek untuk menggunakan modul.
sumber
Periksa jalur impor Anda pada file main.go Anda. Saya harus memanggil seluruh jalur impor "github.com/[username[/[project-name[/views alih-alih [nama-proyek] / tampilan untuk membuatnya bekerja di pihak saya.
sumber
KARENA PERGI TIDAK BISA MENCARI MODUL !!!
Jangan menaruh proyek Anda di GOPATH ... itu sangat membingungkan
Sebagai gantinya...
atur dalam .bashrc: export GO111MODULE = on
tutup semua terminal baris perintah, lalu buka kembali terminal
buka folder root proyek
$ go mod init project_module_name
Ini akan menghasilkan file go.mod
Instal paket Anda dengan versi yang Anda inginkan:
go get -v github.com/golang/[email protected]
Kemudian jalankan $
go run main.go
Sekarang file go.mod harus merekam versi paket yang akan digunakan Golang untuk menjalankan dan membangun ...
Pastikan Anda menggunakan versi paket yang benar dengan memeriksa file go.mod! Seharusnya terlihat seperti: github.com/golang/protobuf v1.3.4
sumber
Do not put your project inside GOPATH... that is so confusing
- Itu adalah konvensi, yang saya sukai.missing dot in first path element
bukancannot resolve module
incorrect
?