使用Go Module在Heroku上构建一个应用程序,并更改根目录。

huangapple go评论82阅读模式
英文:

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.

huangapple
  • 本文由 发表于 2022年6月9日 11:23:08
  • 转载请务必保留本文链接:https://go.coder-hub.com/72554394.html
匿名

发表评论

匿名网友

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

确定