我一直在做一个 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(构建日志显示外部包的成功安装)