英文:
Build an app on Heroku using Go Module. change the root directory
问题
我选择使用Go模块特定的方式来构建我的Go应用程序。
当我设置目录如下时,它可以正常工作。
main.go
go.mod
go.sum
README.md
其中go.mod文件内容如下:
module xxx
// +heroku goVersion go1.18
go 1.18
...
但是我想把所有的源代码放在src文件夹中,并推送到Heroku,但会出错。
README.md
🐒 src
- main.go
- go.mod
- go.sum
有没有一种方法可以实现这个需求?
英文:
I choose the way Go Module Specifics to build my Go app.
When I set the directory like below, it works well.
main.go
go.mod
go.sum
README.md
where go.mod
module xxx
// +heroku goVersion go1.18
go 1.18
...
But I want to put the all source code in the src folder. and push to Heroku, it will wrong
README.md
📂 src
- main.go
- go.mod
- go.sum
Is there a way to do this?
答案1
得分: 1
你的go.mod
(和go.sum
)文件需要位于代码库的根目录中。Buildpack 将在代码库中搜索 main
包并编译它们。你可以通过使用 +heroku install
构建指令来覆盖此行为(即要构建的内容):
> 当使用 Go 模块时,该构建包将在代码库中搜索主要包,忽略任何位于 vendor/ 目录中的包,并自动编译这些包。如果这不是你想要的,你可以通过 go.mod 文件的 // +heroku install 指令指定特定的包规范(见下文)。
README.md
- go.mod
- go.sum
📂 src
- main.go
我认为在 Heroku 中,你不能在比根目录更深的层级上使用 Go 模块的特定功能,但你的代码确实可以位于子目录中。
英文:
Your go.mod
(and go.sum
) files need to be in the codebase root directory. Buildpack will search the codebase for main
package(s) and compile them all. You can override this behavior (what get's build) by using +heroku install
build directive:
> When using go modules, this buildpack will search the code base for main packages, ignoring any in vendor/, and will automatically compile those packages. If this isn't what you want you can specify specific package spec(s) via the go.mod file's // +heroku install directive (see below).
README.md
- go.mod
- go.sum
📂 src
- main.go
I don't think you can use Go Module Specifics with go.mod
file on deeper level than root in Heroku but your code can indeed be in subdirectory.
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论