Не могу найти пакет "github.com/gorilla/mux" ни в одном из:

Я использую команду go get github.com/gorilla/mux, Я сделал http-сервер, используя Golang, и я запускаю эту программу:

package main

import (
    "fmt"
    "html"
    "log"
    "net/http"

    "github.com/gorilla/mux"
)

func main() {

    router := mux.NewRouter().StrictSlash(true)
    router.HandleFunc("/", Index)
    log.Fatal(http.ListenAndServe(":8080", router))
}

func Index(w http.ResponseWriter, r *http.Request) {
    fmt.Fprintf(w, "Hello, %q", html.EscapeString(r.URL.Path))

Но я конфликтую с этой ошибкой:

/usr/local/go/bin/go build -i [/Users/imac/go/src]
http.go:9:5: cannot find package "github.com/gorilla/mux" in any of:
    /usr/local/go/src/github.com/gorilla/mux (from $GOROOT)
    ($GOPATH not set)
Error: process exited with code 1.

Моя среда Go находится здесь:

GOARCH="amd64"
GOBIN=""
GOEXE=""
GOHOSTARCH="amd64"
GOHOSTOS="darwin"
GOOS="darwin"
GOPATH="/Users/imac/go"
GORACE=""
GOROOT="/usr/local/go"
GOTOOLDIR="/usr/local/go/pkg/tool/darwin_amd64"
CC="clang"
GOGCCFLAGS="-fPIC -m64 -pthread -fno-caret-diagnostics -Qunused-arguments -fmessage-length=0 -fdebug-prefix-map=/var/folders/v9/fkc_t97s5v1g9sr938zzvxvh0000gn/T/go-build096571864=/tmp/go-build -gno-record-gcc-switches -fno-common"
CXX="clang++"
CGO_ENABLED="1"

Я борюсь с этой ошибкой в ​​течение недели, но я не могу найти решение. Пожалуйста, помогите мне.

8 ответов

Решение

Можете ли вы эти шаги для его отладки:

  1. ls -l /usr/local/go/src/github.com | grep gorilla
  2. cd $GOPATH

    go list ... | grep gorilla

  3. если вы не видите гориллу в приведенных выше двух командах, то вам нужно установить ее:go get -v -u github.com/gorilla/mux

Пожалуйста, запустите это: export PATH=$PATH:$GOPATH/bin

Как насчет бега go run main.go? это работает, если да, вы должны быть в состоянии сделать go build от вашего пути проекта.

Это работает для меня ...

  1. команда fire > go mod init <ваш-каталогNane-where-main.go-exits>
  2. команда fire> перейти и получить github.com/gorilla/mux

после запуска обеих команд вы увидите 2 файла:

  1. go.mod
  2. go.sum

наконец, закройте код VS и откройте снова, ошибка будет устранена

Желаю, чтобы это было полезно. Вы можете выключить "мод".

$ export GO111MODULE=off

Просто удалите цитаты, как это:

go get github.com/gorilla/mux

Если вы используете VS Code в качестве IDE и сталкиваетесь с этой проблемой:

VS Code использует $HOME/go как ваш по умолчанию GOPATH - если вы экспортируете другой GOPATH Вы сталкиваетесь с этой проблемой.

Как решить:

  1. Используйте внутренний код VS Code и перейдите в папку вашего проекта: cd prjectFolder, Тип go env и проверьте, если GOPATH запись такая же, как вы получаете, когда вы используете cmd+t а потом >Go: Current GOPATH
  2. Если он не подходит, добавьте в свои настройки пользователя: "go.gopath": "/some/path" где /some/path это тот же путь, который вы экспортируете в свою оболочку, zsh и так далее.

Надеюсь это поможет.

Я пытаюсь удалить github.com/gorilla а также github.com/peterbourgon затем повторите попытку: make, оно работает.

<pre>
fail log:


mac@user:~/TempPlace/temp/ngrok% make
go fmt ngrok/...
go get github.com/jteeuwen/go-bindata
GOOS="" GOARCH="" go install github.com/jteeuwen/go-bindata/go-bindata
bin/go-bindata -nomemcopy -pkg=assets -tags=debug \
  -debug=true \
  -o=src/ngrok/client/assets/assets_debug.go \
  assets/client/...
go get github.com/jteeuwen/go-bindata
GOOS="" GOARCH="" go install github.com/jteeuwen/go-bindata/go-bindata
bin/go-bindata -nomemcopy -pkg=assets -tags=debug \
  -debug=true \
  -o=src/ngrok/server/assets/assets_debug.go \
  assets/server/...
go get -tags 'debug' -d -v ngrok/...
src/ngrok/server/config.go:16:2: no Go files in /Users/apple/TempPlace/temp/ngrok/src/github.com/gorilla/mux
src/ngrok/server/config.go:17:2: no Go files in /Users/apple/TempPlace/temp/ngrok/src/github.com/peterbourgon/diskv
make: *** [deps] Error 1


success log:


mac@user:~/TempPlace/temp/ngrok% make
go fmt ngrok/...
go get github.com/jteeuwen/go-bindata
GOOS="" GOARCH="" go install github.com/jteeuwen/go-bindata/go-bindata
bin/go-bindata -nomemcopy -pkg=assets -tags=debug \
  -debug=true \
  -o=src/ngrok/client/assets/assets_debug.go \
  assets/client/...
go get github.com/jteeuwen/go-bindata
GOOS="" GOARCH="" go install github.com/jteeuwen/go-bindata/go-bindata
bin/go-bindata -nomemcopy -pkg=assets -tags=debug \
  -debug=true \
  -o=src/ngrok/server/assets/assets_debug.go \
  assets/server/...
go get -tags 'debug' -d -v ngrok/...
github.com/gorilla/websocket (download)
github.com/gorilla/mux (download)
src/ngrok/server/config.go:17:2: no Go files in /Users/apple/TempPlace/temp/ngrok/src/github.com/peterbourgon/diskv
make: *** [deps] Error 1
mac@user:~/TempPlace/temp/ngrok% make
go fmt ngrok/...
go get github.com/jteeuwen/go-bindata
GOOS="" GOARCH="" go install github.com/jteeuwen/go-bindata/go-bindata
bin/go-bindata -nomemcopy -pkg=assets -tags=debug \
  -debug=true \
  -o=src/ngrok/client/assets/assets_debug.go \
  assets/client/...
go get github.com/jteeuwen/go-bindata
GOOS="" GOARCH="" go install github.com/jteeuwen/go-bindata/go-bindata
bin/go-bindata -nomemcopy -pkg=assets -tags=debug \
  -debug=true \
  -o=src/ngrok/server/assets/assets_debug.go \
  assets/server/...
go get -tags 'debug' -d -v ngrok/...
github.com/peterbourgon/diskv (download)
github.com/google/btree (download)
go install -tags 'debug' ngrok/main/ngrok
go install -ldflags "-s" -tags 'debug' ngrok/main/ngrokd

</pre>

Пытаться go build /Users/imac/go/src/project

потому что я вижу, вы пытаетесь использовать go build под /Users/imac/go/src

Возможно, это поможет другим пользователям, работающим в Windows. В моем случае мне пришлось создать две символические ссылки:

  1. запустить cmd от имени администратора
  2. cd%gopath%
  3. mklink /D src pkg\mod
    создает символическую ссылку между src и pkg \ mod
  4. cd src \ github.com \ горилла

Здесь вы заметите, что пакет mux может быть указан как mux@v1.8.0

  1. mklink /D мультиплексор mux@v1.8.0

После этого go сможет найти github.com/gorilla/mux в папке%gopath%\src\github.com\gorilla\mux.

Наконец, вы должны установить GO111Module на offset GO111Module=off

и теперь вы можете создать свое приложение:

  • иди и создай app.go
Другие вопросы по тегам