web-dev-qa-db-ja.com

gorilla / muxをインポートできません(github.com/gorilla/[email protected]:go.modでは明示的に必要ですが、vendor / modules.txtでは明示的にマークされていません)

Goでは、単純なデータベース接続を試みていました。 gorilla/muxをインポートする必要がありますが、インポートできませんでした。

VS Codeを使用しています。プロジェクトディレクトリにcdした後、main.goを作成してgo get -u github.com/gorilla/muxを実行しました

これはmain.goです

package main

import (
    "database/sql"
    "fmt"
    "github.com/gorilla/mux"
    _ "github.com/lib/pq"
)

const (
    Host     = "localhost"
    port     = 3000
    user     = "postgres"
    password = "postgres"
    dbname   = "test1"
)

func main() {
    psqlInfo := fmt.Sprintf("Host=%s port=%d user=%s "+
        "password=%s dbname=%s sslmode=disable",
        Host, port, user, password, dbname)

    db, err := sql.Open("postgres", psqlInfo)
    if err != nil {
        panic(err)
    }
    defer db.Close()

    err = db.Ping()
    if err != nil {
      panic(err)
    }

    fmt.Println("Successfully connected!")
}

[注意:go get -u github.com/gorilla/muxを実行すると、ターミナルに

C:\Go\src\github.com\IamFrost\go-rest-api>go get -v -u github.com/gorilla/mux
go: golang.org/x/text upgrade => v0.3.2
go: golang.org/x/crypto upgrade => v0.0.0-20200429183012-4b2356b1ed79
go: golang.org/x/sys upgrade => v0.0.0-20200430082407-1f5687305801
go: golang.org/x/net upgrade => v0.0.0-20200425230154-ff2c4b7c35a0
go: downloading golang.org/x/sys v0.0.0-20200430082407-1f5687305801
golang.org/x/sys/cpu
golang.org/x/crypto/chacha20poly1305
crypto/tls

]

enter image description here ミニマップに他の構文エラーがないように見えます。赤いマークのところにマウスを置くと、ホバーテキストが面白い。

1)imported but not used

しかし次の行

2)no package for import github.com/gorilla/mux

笑1)に反しませんでしたか?

誰かがその理由を説明してください

しかしながら、

ターミナルgo buildを使用した後

これがターミナルです:

C:\Go\src\github.com\IamFrost\go-rest-api>go build
go: inconsistent vendoring in C:\Go\src:
        github.com/gorilla/[email protected]: is explicitly required in go.mod, but not marked as explicit in vendor/modules.txt
        github.com/lib/[email protected]: is explicitly required in go.mod, but not marked as explicit in vendor/modules.txt
        golang.org/x/[email protected]: is explicitly required in go.mod, but not marked as explicit in vendor/modules.txt
        golang.org/x/[email protected]: is explicitly required in go.mod, but not marked as explicit in vendor/modules.txt
        golang.org/x/[email protected]: is explicitly required in go.mod, but not marked as explicit in vendor/modules.txt
        golang.org/x/[email protected]: is marked as explicit in vendor/modules.txt, but not explicitly required in go.mod
        golang.org/x/[email protected]: is marked as explicit in vendor/modules.txt, but not explicitly required in go.mod
        golang.org/x/[email protected]: is marked as explicit in vendor/modules.txt, but not explicitly required in go.mod

run 'go mod vendor' to sync, or use -mod=mod or -mod=readonly to ignore the vendor directory

[注: 'go mod vendor'も行いましたが、変更はありません]

だから、誰かがgorilla/muxまたはpqをインポートできない理由を指摘してくれます。

他に何をしなければなりませんか?

(それが何を意味するのか説明してください。is explicitly required in go.mod, but not marked as explicit in vendor/modules.txt

1
Frost

なぜ機能するのかわかりません(私は初心者です)。私はネットで何かを見つけました、何とかそれはうまくいきました。方法は次のとおりです。

1)これは私のgoディレクトリですC:\Go\。しかし、私は自分のデスクトップフォルダにプロジェクトを作成します

2)次に、C:\ Go\srcの下にプロジェクトを再作成しました(これは、正確なフォルダーC:\ Go\src\github.com\[github_username]\[project_name]です)

3)次に、すべてのコードをmain.go

4)最後にターミナルからgo mod vendor

5)次にgo build

6)次にgo run main.go

7)最後にうまくいきました

[なぜ機能したのか知りたい。私はあなたのコメントを本当に感謝します:なぜ彼らは私をC:\Go\src。私はすでに[〜#〜] gopath [〜#〜]C:\Go\[〜#〜] gobin [〜#〜]C:\Go\bin環境変数に設定]

1
Frost