我正在尝试使用一个非常简单的数据库支持的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 ..
答案 0 :(得分:4)
问题是golang是一种编译语言,而heroku local
只使用最后一次构建,并且不会自行启动重建。解决方法是在运行heroku local
:
$ go install
如果您使用go run web.go
进行测试,很容易忘记这一点,因为它不需要重新编译,而heroku本身会自动执行构建,因此您可以从不运行{{1直到您尝试使用go install
。
(一旦我把整个问题写出来,我实际上已经知道了这一点,但我想我应该发布以备将来参考。)