đường dẫn mô-đun không đúng định dạng xxx xxx / xxxx / uuid Dấu chấm bị thiếu trong phần tử đường dẫn đầu tiên khi di chuyển từ GOPATH dựa trên dep để đi mod


12
phiên bản $ đi
1.13.3

Tôi có một cấu trúc thư mục như sau:

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

my-auth-serversử dụng my-api-server/my-utils/uuidnhư một sự suy giảm

Bây giờ, khi tôi sử dụng hệ thống mô-đun dựa trên GOPATH, nó hoạt động tốt. Nhưng khi sử dụng mô-đun go, khi tôi chạy go run main.gotrong my-auth-servernó đã trả về lỗi:

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

Bất kỳ ý tưởng làm thế nào để giải quyết điều này?


Xem câu trả lời này: stackoverflow.com/a/55347424/1218512
colminator

Câu trả lời:


10

Các go.modtập tin nên ở gốc của dự án của bạn (trong trường hợp này, my-api-server/go.mod).

Phần đầu tiên của đường dẫn mô-đun phải là một miền / đường dẫn. Ví dụ, đường dẫn đầy đủ có thể là github.com/your-github-username/my-api-server. Lỗi bạn thấy là do phần đầu tiên không phải là một miền (có dấu chấm). Bạn không phải xuất bản mô-đun để phát triển nó, nhưng bạn cần sử dụng một tên miền phù hợp.

Khi bạn có đường dẫn mô-đun, bạn có thể nhập các gói có trong mô-đun đó bằng đường dẫn mô-đun đầy đủ + "/" + đường dẫn tương đối của gói. Ví dụ,

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

main.gouuidđược chứa trong cùng một mô-đun, bạn không cần một requirecâu lệnh trong go.modtệp để sử dụng uuidgói. Bạn có thể nhập nó như bất kỳ gói nào khác và nó sẽ hoạt động.

Tôi khuyên bạn nên sử dụng go buildvà chạy kết quả thực thi thay vì sử dụng go runđể đảm bảo bạn bao gồm tất cả các tệp bạn cần trong quá trình xây dựng.

Xem https://blog.golang.org/USE-go-modules để biết hướng dẫn cách sử dụng các mô-đun Go, bao gồm bài đăng thứ hai trong loạt bài đó về cách chuyển đổi dự án sang sử dụng mô-đun.


1

Kiểm tra đường dẫn nhập của bạn trên tệp main.go của bạn. Tôi đã phải gọi toàn bộ đường dẫn nhập "github.com/[username[/[project-name[/view thay vì [tên dự án] / lượt xem để làm cho nó hoạt động.


-1

VÌ SAO KHÔNG THỂ TÌM ĐƯỢC MÔ HÌNH !!!

Đừng đặt dự án của bạn vào GOPATH ... thật khó hiểu

Thay thế...

được đặt trong .bashrc: export GO111MODULE = on

đóng tất cả các thiết bị đầu cuối dòng lệnh, sau đó mở lại thiết bị đầu cuối

đi đến thư mục gốc của dự án

$ go mod init project_module_name

Điều này sẽ tạo tập tin go.mod

Cài đặt gói của bạn với phiên bản bạn muốn: go get -v github.com/golang/protobuf@v1.3.4

Sau đó chạy $ go run main.go

Bây giờ tệp go.mod sẽ ghi lại các phiên bản gói mà Golang sẽ sử dụng để chạy và xây dựng ...

Hãy chắc chắn rằng bạn đang sử dụng các phiên bản gói chính xác bằng cách kiểm tra tệp go.mod! Nó sẽ trông giống như: github.com/golang/protobuf v1.3.4


Do not put your project inside GOPATH... that is so confusing- Đó là một quy ước, mà tôi đặc biệt thích.
Ayush Gupta

Ngoài ra, lỗi missing dot in first path elementkhông phải làcannot resolve module
Ayush Gupta

Ayush Gupta, lỗi là do sử dụng mô-đun không chính xác
Russo

Xác định incorrect?
Ayush Gupta

phiên bản gói không chính xác có đường dẫn tệp không chính xác => khiến Golang không thể tìm thấy tệp chính xác để chạy hoặc xây dựng
Russo
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.