LoginSignup
21
11

More than 1 year has passed since last update.

【Go言語】作成したpackageをimportして使用。「cannot find module for path」エラー時の解決

Last updated at Posted at 2019-12-03

◇ 流れ

【Go言語】packageを作成

importに「./XXXXX」でパス指定

実行

「cannot find module for path」と怒られる

解決

◇ ディレクトリ構成

:file_folder: GOPATH
 ┣━ :file_folder: bin
 ┣━ :file_folder: pkg
 ┗━ :file_folder: src
    ┗━ :file_folder: test
       ┣━ :file_folder: route
       ┃   ┗━ :page_facing_up: route.go
       ┣━ :page_facing_up: go.mod
       ┗━ :page_facing_up: 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 mod initgo.modを作成。

ターミナル
$ cd C:\GOPATH\src\test

$ go mod init
go: creating new go.mod: module test
go.mod
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

cannot find module for pathとエラーがでて怒られた。。。

パスはあっているのに何故か、
package の読み込みが出来ていないのでかなり詰まりました。

↓↓↓↓↓ 解決策 ↓↓↓↓↓↓

go.modにmoduleの名前があるので
「./route」を「test/route」に置き換える

go.mod
module test ← moduleの名前

go 1.13
main.go
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

21
11
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
21
11