2014-06-16 93 views
0

我想用最簡單的方法執行HTTP請求。我決定使用管道。這是我的主文件:無法構建發送HTTP請求的簡單應用程序

{-# LANGUAGE OverloadedStrings #-} 
import Network.HTTP.Conduit -- the main module 

-- The streaming interface uses conduits 
import Data.Conduit 
import Data.Conduit.Binary (sinkFile) 

import qualified Data.ByteString.Lazy as L 
import Control.Monad.IO.Class (liftIO) 

main :: IO() 
main = do 
    simpleHttp "http://www.example.com/foo.txt" >>= L.writeFile "foo.txt" 

而且.cabal:

executable AAA 
    main-is: Main.hs    
    hs-source-dirs: src 
    build-depends:  base ==4.6.*, text ==0.11.*, http-conduit, transformers, bytestring 

我不能建造它,錯誤的是:

$ cabal build 
Building AAA-0.1.0.0... 
Preprocessing executable 'AAA' for 
AAA-0.1.0.0... 

src/Main.hs:6:8: 
    Could not find module `Data.Conduit.Binary' 
    Perhaps you meant 
     Data.Conduit.List (needs flag -package conduit-1.1.4) 
     Data.Conduit.Lift (needs flag -package conduit-1.1.4) 
    Use -v to see a list of the files searched for. 

我已經安裝了所有的庫在.cabal文件中顯示cabal install xxx

這是怎麼回事?

更新:

Couldn't match type `L.ByteString' 
        with `bytestring-0.10.0.2:Data.ByteString.Lazy.Internal.ByteString' 
    Expected type: bytestring-0.10.0.2:Data.ByteString.Lazy.Internal.ByteString 
        -> IO() 
     Actual type: L.ByteString -> IO() 
    In the return type of a call of `L.writeFile' 
    In the second argument of `(>>=)', namely `L.writeFile "foo.txt"' 
    In a stmt of a 'do' block: 
     simpleHttp "http://www.example.com/foo.txt" 
     >>= L.writeFile "foo.txt" 

回答

4

所以,問題是,你的程序進口Data.Conduit.Binary未安裝。它位於conduit-extra包中,因此如果要使用它,您必須將其添加到您的依賴項並進行安裝。

雖然你的主要功能並沒有真正使用它,所以你可以刪除導入,它應該修復當前的錯誤。然而,當你嘗試構建時,你會得到一個新的錯誤,因爲你還導入了Data.Conduit,它也沒有在你的cabal文件中列出。要解決此錯誤,請刪除導入或將conduit添加到您的構建依賴項。

+0

你怎麼知道它住在額外的管道中? –

+0

請看看我的更新,那裏有另一個錯誤。 –

+0

這是一個奇怪的錯誤。我試過你的代碼,並在我的電腦上編譯。除了取消進口之外,您是否改變過其他任何內容?你也可以嘗試重新安裝沙箱,刪除.cabal-sandbox目錄,然後執行'cabal sandbox init',然後'cabal install --dependencies-only',然後嘗試'cabal run'。 – Reite

0

好像現在你已經安裝了兩個(至少)bytestring版本,不同的軟件包不同意使用哪一個版本。我建議重新安裝http-conduit

相關問題