package main: malformed module path "main": missing dot in first path elemen 報錯的解決


如果想在你的模塊如果想引入你本地其他地方的模塊,可以嘗試通過 replace 指定目錄,而且前提是你的 article 也得 go 的一個模塊,而不是按 gopath 下的某個包來引入。

我簡答舉個例子吧,比如現在有兩個項目,分別是 blog 和 article,結果如下:

├─article
│      article.go
│      go.mod
│
├─blog
│      go.mod
│      main.go

blog 是應用的入口,main 所在位置,而 article 可以理解為你寫的一個公共的庫,其中提供了一個函數 Hello()。現在,要在 blog 中調用 article 中的 Hello() 函數。

article 模塊中的 go.mod 內容如下:

module article go 1.13

article.go 內容如下:

package article func Hello() string { return "Hello" }

blog 模塊中的 go.mod 內容如下:

go 1.13 require github.com/article v0.0.0-incompatible replace github.com/article => ../article

此處的 replace 稍微介紹下,之所以要是 github.com/article 的格式,是因為在 go1.13 中, go module 名稱規范要求路徑的第一部分必須滿足域名規范,否則可能匯報類似 malformed module path "article": missing dot in first path element 這樣的錯誤。當然,在 go1.12 不會有報這個錯誤。建議的話,如果是公司內部使用,可以替換成公司內部域名。

replace 的第二個參數指定了不從遠程獲取,而是本地某個路徑下的模塊替換 github.com/article。

main.go 的內容如下:

package main import ( "fmt" "github.com/article" ) func main() { fmt.Println("Hello") fmt.Println(article.Hello()) }

此時,在 blog 執行 go run main.go 是可以成功運行的。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM