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

时间:2016-03-22 22:41:59

标签: git heroku go heroku-toolbelt

我正在尝试使用一个非常简单的数据库支持的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正在使用未经更新的某个地方编译的slu ..

1 个答案:

答案 0 :(得分:4)

问题是golang是一种编译语言,而heroku local只使用最后一次构建,并且不会自行启动重建。解决方法是在运行heroku local

之前记住编译
$ go install

如果您使用go run web.go进行测试,很容易忘记这一点,因为它不需要重新编译,而heroku本身会自动执行构建,因此您可以从不运行{{1直到您尝试使用go install

(一旦我把整个问题写出来,我实际上已经知道了这一点,但我想我应该发布以备将来参考。)