我正在尝试将我的Discord Bot部署到Heroku,并且我已成功将我的Github帐户链接到Heroku。它可以成功找到我正在尝试部署的存储库,但是当我尝试手动部署时,它会给我错误:
! No default language could be detected for this app.
HINT: This occurs when Heroku cannot detect the buildpack to use for this application automatically.
See https://devcenter.heroku.com/articles/buildpacks
! Push failed
我的机器人在Go中编码,由Heroku支持。可能是我的代码有外部库吗?如果是这样,我如何在Heroku中添加对这些库的支持?提前谢谢。
答案 0 :(得分:1)
On Heroku项目使用所谓的buildpacks编译/构建。为使用不同语言的项目创建特定的构建包。对于Go项目,存在heroku/go
,它知道如何获取,编译和构建Go项目,包括在构建过程中自动获取它们的依赖项。
buildpack选择可以手动或自动进行。您看到发布的错误,因为您没有手动设置任何构建包,并且自动检测失败。请参阅以下原因。
对于手动选择,请下载Heroku CLI,然后执行以下命令:
heroku buildpacks:set heroku/go
注意:如果您是第一次使用heroku
cli,则可能需要使用heroku login
登录。此外,如果默认情况下未选择您的应用,您可以使用-a
或--app
参数指定它,例如:
heroku buildpacks:set heroku.go -a yourappname
要查看选定的构建包,请执行heroku buildpacks
命令。
仅仅因为项目使用Go语言,heroku/go
buildpack不会自动被选中。
是否应使用heroku/go
的实际检测由脚本heroku-buildpack-go/bin/detect
完成,检测逻辑为:
if test -f "${build}/Godeps/Godeps.json" || # godeps
test -f "${build}/vendor/vendor.json" || # govendor
test -f "${build}/glide.yaml" || # glide
(test -d "${build}/src" && test -n "$(find "${build}/src" -mindepth 2 -type f -name '*.go' | sed 1q)") # gb
then
echo Go
else
exit 1
fi
基本上检测到Go语言,如果项目中存在以下文件之一,则会自动选择heroku/go
buildpack:
Godeps/Godps.json
;由godep vendor/vendor.json
;由govendor glide.yaml
;由glide src/*/*/**/*.go
;由GB 关于使用Go和Heroku工作的官方文章: