【Go言語】作成したpackageをimportして使用。「cannot find module for path」エラー時の解決
◇ 流れ
【Go言語】packageを作成
↓
importに「./XXXXX」でパス指定
↓
実行
↓
「cannot find module for path」と怒られる
↓
解決
◇ ディレクトリ構成
GOPATH
┣━ bin
┣━ pkg
┗━ src
┗━ test
┣━ route
┃ ┗━ route.go
┣━ go.mod
┗━ main.go
◇ go環境
ターミナル
$ go version
go version go1.13.4 windows/amd64
$ go env
set GO111MODULE=on
set GOBIN=C:\GOPATH\bin
set GOENV=C:\Users\XXXXXX\AppData\Roaming\go\env
set GOEXE=.exe
set GOHOSTARCH=amd64
set GOOS=windows
set GOPATH=C:\GOPATH
set GOROOT=C:\Go
◇ go.mod を作成。
$ go version
go version go1.13.4 windows/amd64
$ go env
set GO111MODULE=on
set GOBIN=C:\GOPATH\bin
set GOENV=C:\Users\XXXXXX\AppData\Roaming\go\env
set GOEXE=.exe
set GOHOSTARCH=amd64
set GOOS=windows
set GOPATH=C:\GOPATH
set GOROOT=C:\Go
プロジェクトルートに、$ go mod init
でgo.mod
を作成。
$ cd C:\GOPATH\src\test
$ go mod init
go: creating new go.mod: module test
module test
go 1.13
◇ main.go と route パッケージを作成。
main.go
package main
import "./route"
func main() {
route.Route()
}
route/route.go
package route
import (
"github.com/labstack/echo"
"net/http"
)
func Route() {
e := echo.New()
e.GET("/", getHandler)
e.Logger.Fatal(e.Start(":1323"))
}
// サイトを表示させる
func getHandler(c echo.Context) error {
return c.String(http.StatusOK, "Hello, World!")
}
◇ 実行
ターミナル
go run main.go
go: finding golang.org/x/crypto latest
build _/c_/GOPATH/src/test/route: cannot find module for path _/c_/GOPATH/src/test/route
package main
import "./route"
func main() {
route.Route()
}
package route
import (
"github.com/labstack/echo"
"net/http"
)
func Route() {
e := echo.New()
e.GET("/", getHandler)
e.Logger.Fatal(e.Start(":1323"))
}
// サイトを表示させる
func getHandler(c echo.Context) error {
return c.String(http.StatusOK, "Hello, World!")
}
go run main.go
go: finding golang.org/x/crypto latest
build _/c_/GOPATH/src/test/route: cannot find module for path _/c_/GOPATH/src/test/route
cannot find module for path
とエラーがでて怒られた。。。
パスはあっているのに何故か、
package の読み込みが出来ていないのでかなり詰まりました。
↓↓↓↓↓ 解決策 ↓↓↓↓↓↓
go.mod
にmoduleの名前があるので
「./route」を「test/route」に置き換える
module test ← moduleの名前
go 1.13
package main
import "./route" → "test/route" に変更
func main() {
route.Route()
}
参考サイト
go 1.11のmodules(vgo)が有効な環境で相対importが cannot find module for path でエラーになった話。
https://pod.hatenablog.com/entry/2018/12/26/074944
Author And Source
この問題について(【Go言語】作成したpackageをimportして使用。「cannot find module for path」エラー時の解決), 我々は、より多くの情報をここで見つけました https://qiita.com/namari/items/a037e2167eeec3a20ea7著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .