2

(Wai)で(Warp)用の簡単なHelloWorldアプリケーションを作成しました。より複雑なアプリと同様に、UbuntuLinuxでも正常に動作します。しかし、このHelloWorldアプリをWindowsで実行することすらできません。Windows 7 Home Premium SP132ビットでHaskellPlatform(インストールファイル2012.2.0.0)を使用しています。

これは(Linuxで動作する)コードです:

{-# LANGUAGE OverloadedStrings #-} 

import Network
import Network.Wai
import Network.HTTP.Types (status200)
import Network.Wai.Handler.Warp (run)
-------------------------------------------------------------------------------
application = \_-> return $ responseLBS status200 [("Content-Type", "text/plain")] 
                            "Hello World" 

main = withSocketsDo $ do run 3000 application

これらは、コードをロードして実行したときのGHCIメッセージです(メイン):

Prelude> :l wai_hello_world.hs
[1 of 1] Compiling Main             ( wai_hello_world.hs, interpreted )
Ok, modules loaded: Main.
*Main> main
Loading package bytestring-0.9.2.1 ... linking ... done.
Loading package [ **edited**: blah blah blah - other packages - removed for readability]
Loading package warp-1.3.2 ... linking ... done.

コードをロードした後、Webサーバーが実行されていないように見えます。

私はいくつかの一般的な落とし穴に遭遇しているかもしれないと思います-もしそうなら私に知らせてください。

すべてのフィードバックを事前に感謝します。

更新:以下の回答に記載されているように、これらのエラーはCtrl-Cアクションのみが原因であり、ランタイムが強制終了され、質問のWai / Warpの予期しない動作の一部ではありません。

Ctrl-Cを数回押して発生すると、次のメッセージまたはさまざまなメッセージが表示されます。

NIenttweorrrku.pStoecdk.e
t.ace*Main> p: failed (No error)
user error (accept: can't perform accept on socket ((AF_INET,Stream,0)) in status Closed)
user error (accept: can't perform accept on socket ((AF_INET,Stream,0)) in status Closed)
*Main>
*Main> user error (accept: can't perform accept on socket ((AF_INE,:Sream,0)) in status Closed)
q
Leaving GHCi.
4

2 に答える 2

1

おそらくを使用する必要がありますwithSocketsDo

于 2012-12-06T13:13:53.653 に答える