英文:
cannot find package "github.com/gorilla/mux" in any of:
问题
我使用命令 go get github.com/gorilla/mux
。我使用 Golang 创建了一个 HTTP 服务器,并运行了这个程序:
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"
我已经为这个错误奋斗了一个星期,但是找不到解决办法。请帮帮我。
英文:
I use command go get github.com/gorilla/mux
. I made http server using Golang, and I run this program :
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))
But I conflict this error :
/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.
My Go environment is here :
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"
I fight with this error for a week, But I can't find out solution. Please help me.
答案1
得分: 19
你可以尝试以下步骤来进行调试:
- 运行命令
ls -l /usr/local/go/src/github.com | grep gorilla
- 运行命令
cd $GOPATH
,然后运行命令go list ... | grep gorilla
- 如果在上述两个命令中没有看到 gorilla,那么你需要安装它,可以运行命令
go get -v -u github.com/gorilla/mux
请运行命令 export PATH=$PATH:$GOPATH/bin
尝试运行 go run main.go
,如果可以正常运行,那么你应该能够在项目路径下运行 go build
。
英文:
Could you try this steps to debug it:
-
ls -l /usr/local/go/src/github.com | grep gorilla
-
cd $GOPATH
go list ... | grep gorilla
-
if you din't see gorilla in the above two command, then you need to install it:
go get -v -u github.com/gorilla/mux
Please run this: export PATH=$PATH:$GOPATH/bin
How about running go run main.go
? is that working, if yes you should be able to do go build
from your project path.
答案2
得分: 6
我希望这对你有帮助。
你可以关闭 'mod'。
$ export GO111MODULE=off
英文:
I wish this helpful.
You may off the 'mod'.
$ export GO111MODULE=off
答案3
得分: 6
这对我来说没问题...
- 执行命令
> go mod init <你的主文件所在的目录名> - 执行命令 > go get github.com/gorilla/mux
执行完这两个命令后,你将能看到两个文件:
- go.mod
- go.sum
最后,关闭 VS Code 并重新打开,错误将会解决
英文:
This works for me...
- fire command
> go mod init <your-directoryNane-where-main.go-exits> - fire command > go get github.com/gorilla/mux
after firing this both commands you will be able see 2 files :
- go.mod
- go.sum
finally, Close VS code and open again, the error will be resolved
答案4
得分: 5
只需删除引号,如下所示:
go get github.com/gorilla/mux
英文:
Just remove quotes like this:
go get github.com/gorilla/mux
答案5
得分: 5
如果你正在使用 VS Code 作为你的集成开发环境,并且遇到了这个问题:
VS Code 默认使用 $HOME/go
作为你的 GOPATH
- 如果你导出了另一个 GOPATH
,你就会遇到这个问题。
解决方法:
- 使用 VS Code 内部终端并导航到你的项目文件夹:
cd prjectFolder
。输入go env
并检查GOPATH
的条目是否与你使用cmd+t
然后>Go: Current GOPATH
得到的结果相同。 - 如果不一致,在你的用户设置中添加以下内容:
"go.gopath": "/some/path"
其中 /some/path
是你在 shell、zsh 等中导出的路径。
希望能对你有所帮助。
英文:
If you are using VS Code as your IDE and facing this problem:
VS Code uses $HOME/go
as your default GOPATH
- if you export another GOPATH
you running into this trouble.
How to solve:
- Use the VS Code internal terminal and navigate to your project folder:
cd prjectFolder
. Typego env
and check if theGOPATH
entry is the same as you get when you usecmd+t
and then>Go: Current GOPATH
- If it doesn't fit, add in your user settings:
"go.gopath": "/some/path"
where /some/path
is the same path you export in you shell, zsh and so on.
Hope this helps.
答案6
得分: 2
我尝试移除github.com/gorilla
和github.com/peterbourgon
目录,然后重新运行make
命令,它成功了。
以下是失败日志:
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
以下是成功日志:
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
图片链接:点击这里
英文:
I try to remove github.com/gorilla
and github.com/peterbourgon
directory, then, retry: make
, it works.
<!-- begin snippet: js hide: false console: true babel: false -->
<!-- language: lang-html -->
<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>
<!-- end snippet -->
答案7
得分: 0
尝试执行以下命令:go build /Users/imac/go/src/project
,因为我看到你试图在/Users/imac/go/src
目录下使用go build
命令。
英文:
Try go build /Users/imac/go/src/project
because I see you try to use go build
under /Users/imac/go/src
答案8
得分: 0
也许这可以帮助其他在Windows上运行的用户。
在我的情况下,我需要创建两个符号链接:
1. 以管理员身份运行cmd
2. cd %gopath%
3. mklink /D src pkg\mod
这将在src和pkg\mod之间创建一个符号链接
4. cd src\github.com\gorilla
在这里,你会注意到mux包可能被列为mux@v1.8.0
5. mklink /D mux mux@v1.8.0
有了这个,go将能够在%gopath%\src\github.com\gorilla\mux下找到github.com/gorilla/mux
最后,你需要将GO111Module设置为off
set GO111Module=off
现在你可以构建你的应用程序:
go build app.go
英文:
Maybe this can help other users running in Windows.
In my case I had to create two symlinks:
1. run cmd as administrator
2. cd %gopath%
3. mklink /D src pkg\mod
this creates a symlink between src and pkg\mod
4. cd src\github.com\gorilla
Here you'll notice that the mux package might be listed as mux@v1.8.0
5. mklink /D mux mux@v1.8.0
With this, go will be able to find github.com/gorilla/mux
under %gopath%\src\github.com\gorilla\mux
Finally, you have to set GO111Module to off
set GO111Module=off
and now you can build your app:
go build app.go
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论