1

私はニム ビルドパックを使用して、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 を使用してローカルで実行すると、サーバーは正常に動作します。なぜこうなった?

4

1 に答える 1

3

Nim のソケット コードのバグに遭遇したようです。良いニュースは、Githubの devel バージョンのコンパイラで既に修正されていることです。0.11.2 ではここで壊れていました。私の推測では、Heroku では最新リリースの Nim 0.11.2 を使用しており、ローカル コンピューターではこのバグのない devel バージョンを使用しています。

いずれにせよ、解決策は、heroku が使用する Nim のバージョンを更新することです。

于 2015-09-27T12:43:08.863 に答える