运行dep ensure后,go-chi中缺少中间件子包。
project-backend | main.go:8:2: cannot find package "github.com/go-chi/chi/middleware" in any of:
project-backend | /go/src/backend/vendor/github.com/go-chi/chi/middleware (vendor tree)
project-backend | /usr/local/go/src/github.com/go-chi/chi/middleware (from $GOROOT)
project-backend | /go/src/github.com/go-chi/chi/middleware (from $GOPATH)我的Docker文件,我还在docker-compose.yaml文件中挂载了我的代码卷
FROM golang:1.12
WORKDIR /go/src/backend
COPY Gopkg.toml Gopkg.lock ./
RUN go get -u github.com/golang/dep/cmd/dep
COPY . ./
RUN dep ensure
RUN go get github.com/pilu/fresh
CMD [ "fresh" ]Gopkg.toml
[prune]
go-tests = true
unused-packages = true
non-go = true
[[constraint]]
name = "github.com/go-chi/chi"
version = "4.0.2"我的代码,只是一个基本的路由器来测试我的坞站和dep配置。
package main
import (
"fmt"
"net/http"
"github.com/go-chi/chi"
"github.com/go-chi/chi/middleware"
)
func main() {
r := chi.NewRouter()
r.Use(middleware.Logger)
port := ":8080"
r.Get("/api", func(w http.ResponseWriter, r *http.Request) {
w.Write([]byte("API is working!"))
})
format := "\033[1;36m%s\033[0m"
fmt.Printf(format, "Build success, running on port "+port)
http.ListenAndServe(port, r)
}我的代码在使用go get时运行良好。但是在dep上,它缺少它的子包。
发布于 2019-04-21 13:13:59
由于您使用的是Go 1.12,您是否可以尝试在使用go mod (Go 1.11+ Modules)时查看问题是否仍然存在。
$ export GO111MODULE=on # manually active module mode
$ cd $GOPATH/src/<project path> # e.g., cd $GOPATH/src/you/hello
$ go mod init 一个go mod init将与你的dep Gopkg.lock文件一致。
并且它应该检测并获取您丢失的依赖项。
如果这样做有效,那么可以运行go mod tidy来删除任何无关紧要的需求。
https://stackoverflow.com/questions/55779784
复制相似问题