GOPATH tabanlı dep'den go moduna geçerken hatalı biçimlendirilmiş modül yolu “xxxx / xxxx / uuid” ilk yol öğesinde eksik nokta


12
$ go sürümü
1.13.3

Ben aşağıdaki gibi bir klasör yapısı var:

GOPATH
+---src
     +--- my-api-server
           +--- my-auth-server
                 +--- main.go
           +--- my-utils
                 +--- uuid
                       +--- uuid.go

my-auth-servermy-api-server/my-utils/uuidbağımlılık olarak kullanır

Şimdi, GOPATH tabanlı modül sistemini kullandığımda, bu iyi çalıştı. Go modüllerini kullanırken Ama çalıştırdığınızda go run main.goiçinde my-auth-serverbunun hata döndürdü:

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

bunu nasıl çözeceğimize dair bir fikri olan?


Yanıtlar:


10

go.modDosyası (bu durumda projenizin kökünde olmalıdır my-api-server/go.mod).

Modül yolunun ilk kısmı bir alan / yol olmalıdır. Örneğin, tam yol olabilir github.com/your-github-username/my-api-server. Gördüğünüz hata, ilk bölümün bir alan adı olmamasıdır (nokta ile). Modülü geliştirmek için yayınlamanız gerekmez, ancak uygun bir alan adı kullanmanız gerekir.

Bir modül yolunuz olduğunda, paketin ilgili yolunu + "/" + tam modül yolunu kullanarak o modülde bulunan paketleri alabilirsiniz. Örneğin,

import "github.com/your-github-username/my-api-server/my-utils/uuid"

Yana main.gove uuidaynı modülde bulunan, bir ihtiyacım yok requiredeyimi go.modkullanmak için dosyanın uuidpaketi. Diğer herhangi bir paket gibi içe aktarabilirsiniz ve işe yarayacaktır.

Oluşturma işlemine ihtiyacınız olan tüm dosyaları dahil ettiğinizden emin olmak için go build, sonuçta ortaya çıkan yürütülebilir dosyayı kullanmanızı ve çalıştırmanızı öneririm go run.

Go modüllerinin nasıl kullanılacağına dair bir adım için https://blog.golang.org/using-go-modules sayfasına bakın ; bir projenin modülleri nasıl kullanacağına ilişkin bu dizideki ikinci gönderi .


1

Main.go dosyanızdaki içe aktarma yollarınızı kontrol edin. Sonunda çalışmasını sağlamak için [proje adı] / görünümler yerine tüm "alma yolu" github.com/[kullaniciadi Genişletilmiş/[proje-adı sızındı/görünümlerini çağırmak zorunda kaldım.


-1

ÇÜNKÜ GİT MODÜLÜ BULAMAZ !!!

Projenizi GOPATH'ın içine koymayın ... bu çok kafa karıştırıcı

Yerine...

.bashrc: dışa aktarma GO111MODULE = açık olarak ayarlanır

tüm komut satırı terminallerini kapatın, ardından terminalleri tekrar açın

proje kök klasörüne git

$ go mod init project_module_name

Bu, go.mod dosyasını oluşturur

Paketlerinizi istediğiniz sürümle yükleyin: go get -v github.com/golang/protobuf@v1.3.4

Sonra $ çalıştırın go run main.go

Şimdi go.mod dosyası, Golang'ın çalıştırmak ve oluşturmak için kullanacağı paket sürümlerini kaydetmelidir ...

Go.mod dosyasını kontrol ederek doğru paket sürümlerini kullandığınızdan emin olun! Şöyle görünmelidir: github.com/golang/protobuf v1.3.4


Do not put your project inside GOPATH... that is so confusing- Bu, özellikle tercih ettiğim bir kongre.
Ayush Gupta

Ayrıca, hata missing dot in first path elementdeğilcannot resolve module
Ayush Gupta

Ayush Gupta, hata yanlış modül kullanımından kaynaklanıyor
Russo

Tanımla incorrect?
Ayush Gupta

yanlış paket sürümleri yanlış dosya yoluna sahip => neden Golang çalıştırmak veya oluşturmak için doğru dosyayı bulamıyor
Russo
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.