1

我一直在做一个 Go 项目并使用 Heroku 成功部署它,直到我添加了更多包。我的 Heroku 应用程序设置为部署我的 github 存储库的主分支,但每次推送时它都无法构建应用程序。这是构建日志:

-----> Using buildpack: heroku/go
-----> Go app detected
-----> Fetching stdlib.sh.v8... done
-----> 
       Detected go modules via go.mod
-----> 
       Detected Module Name: my-heroku-app
-----> 
-----> New Go Version, clearing old cache
-----> Installing go1.17.3
-----> Fetching go1.17.3.linux-amd64.tar.gz... done
-----> Determining packages to install
       
       Detected the following main packages to install:
            my-heroku-app
       
-----> Running: go install -v -tags heroku -mod=vendor my-heroku-app 
webapp.go:6:2: cannot find package "." in:
    /tmp/build_1bdd9ef1/vendor/github.com/go-sql-driver/mysql
webapp.go:7:2: cannot find package "." in:
    /tmp/build_1bdd9ef1/vendor/github.com/gorilla/context
webapp.go:8:2: cannot find package "." in:
    /tmp/build_1bdd9ef1/vendor/github.com/gorilla/sessions
webapp.go:9:2: cannot find package "." in:
    /tmp/build_1bdd9ef1/vendor/golang.org/x/crypto/bcrypt
 !     Push rejected, failed to compile Go app.
 !     Push failed

这是我的导入语句的样子

import (
    "database/sql"
    "fmt"
    _ "github.com/go-sql-driver/mysql"
    "github.com/gorilla/context"
    "github.com/gorilla/sessions"
    "golang.org/x/crypto/bcrypt"
    "html/template"
    "log"
    "net/http"
    "time"
    "unicode"
)

我已经尝试在 Heroku 和他们的 github 页面上阅读有关 govendor 的指南和文档,据我所知,我已经正确完成了我的设置。我目前正在使用 govendor,并且我的仓库中有一个包含 json 文件的供应商文件夹,其中包含依赖项的信息。当我在本地运行时一切正常

更新:我用最少的代码创建了一个新的仓库,但是一旦我添加了一个依赖项,我就得到了同样的错误。我也尝试在 Digital Ocean 上进行部署,但我认为他们使用开源 Heroku buildpack,所以我遇到了同样的错误

更新 2:我得到了该应用程序的精简版本。尽管使用了外部包,但 repo 没有供应商目录或供应商 json(构建日志显示外部包的成功安装)

4

0 回答 0