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 是可以成功運行的。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章