Heroku本地应用程序没有使用我的最新代码。为什么?

5

我正在尝试创建一个基于数据库的简单的 Golang Heroku 应用,作为 Hello World。

我的应用在部署到 Heroku 后完美地运行,并且如果我在本地手动测试它,也能够完美地运行,但是 heroku local 一直在使用旧版本的代码。具体来说:

$ heroku local
forego | starting web.1 on port 8080

这个应用程序可以运行,但出乎意料地提供了一个较旧的版本。另一方面,这个:

$ go run web.go

并且这个:

$ git push heroku master
Everything up-to-date
$ heroku open

两者都能满足我的期望,即使用最新版本的代码。

这真的让我很困惑。我已经阅读了所有文档并仔细检查了一切的状态,但找不到任何指示正在发生什么或可能导致此问题的原因。

我最好的猜测是heroku local正在使用某个未更新的编译过的 slug。

1个回答

4
问题在于golang是一种编译语言,而heroku local只使用最后一次构建,并不会自动重新构建。解决方法很简单,只需要记得在运行heroku local之前进行编译即可:
$ go install

如果你使用go run web.go进行测试,很容易忘记这一点,因为它不需要重新编译,而且Heroku自动构建,所以你可以永远不运行go install直到你尝试使用heroku local。 (我实际上在写完整个问题后就想到了这一点,但我认为我应该发布以备将来参考。)

我很感激你发帖说“took”,非常感谢。+1 - mbb

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接