Nim 应用程序拒绝在 heroku 上 运行

Nim application refuses to run on heroku

我正在使用 nim buildpack 运行 heroku 上的一个简单的 Jester 服务器。但是,asyncnet 库有时会拒绝使用 heroku 提供的端口(每次都不同)。如果 nim 不喜欢该端口,则会发生以下情况:

Traceback (most recent call last)
macros.nim(293)          blog
jester.nim(326)          serve
asyncdispatch.nim(282)   asyncCheck
asyncdispatch.nim(224)   callback=
asyncdispatch.nim(286)   :anonymous
Error: unhandled exception: value ot of range: 58622 [Exception]

Original stack trace in serve:
Traceback (most recent call last)
macros.nim(293)          blog
jester.nim(326)          serve
asyncdispatch.nim(1212)  serve
asyncdispatch.nim(1199)  cb
asyncnet.nim(433)        bindAddr
asynchttpserver.nim(250) serveIter

Continuing...

(我确定 58622 是 heroku 正在尝试提供程序的端口。)当我在本地使用端口 58622 运行 时,服务器工作正常。为什么会这样?

您似乎无意中发现了 Nim 套接字代码中的错误。好消息是它已经在 Github, in 0.11.2 it was broken here 编译器的开发版本中得到修复。我的猜测是,在 Heroku 上,您使用的是最新版本的 Nim 0.11.2,而在您的本地计算机上,您使用的是没有此错误的开发版本。

无论如何,解决方案应该是更新 heroku 使用的 Nim 版本。