5

公式サーバント チュートリアルスタック ガイドに従って、サーバントとスタックを使用して基本的なプロジェクトを大まかに設定しようとしています。import Servantスタックビルドを追加するとすぐに次のエラーで失敗します:

Could not find module ‘Servant’
Use -v to see a list of the files searched for.

servantはこのモジュールの依存関係として定義し、スタックは次のようにそれを認識しましたstack dependencies:

aeson 0.8.0.2
array 0.5.1.0
attoparsec 0.12.1.6
base 4.8.1.0
binary 0.7.5.0
blaze-builder 0.4.0.1
bytestring 0.10.6.0
bytestring-conversion 0.3.1
case-insensitive 1.2.0.4
containers 0.5.6.2
deepseq 1.4.1.1
dlist 0.7.1.2
double-conversion 2.0.1.0
ghc-prim 0.4.0.0
hashable 1.2.3.3
http-media 0.6.2
http-types 0.8.6
integer-gmp 1.0.0.0
mtl 2.2.1
network-uri 2.6.0.3
parsec 3.1.9
primitive 0.6
scientific 0.3.3.8
servant 0.4.4.2
string-conversions 0.4
syb 0.5.1
template-haskell 2.10.0.0
text 1.2.1.3
tforia-products 0.1.0.0
time 1.5.0.1
transformers 0.4.2.0
unordered-containers 0.2.5.1
utf8-string 1.0.1.1
vector 0.10.12.3

モジュールのコード:

{-# LANGUAGE DataKinds #-}
{-# LANGUAGE TypeOperators #-}

module API
    ( ProductAPI
    , apiServer
    ) where

import Data.Aeson
import GHC.Generics
import Servant

data Product = Product
  { id :: String
  , name :: String
  } deriving (Eq, Show, Generic)

instance ToJSON Product

products :: [Product]
products =
  [ Product "id123" "shoes of some guy"
  , Product "id234" "hat of some gal"
  ]

type ProductAPI = "products" :> Get '[JSON] [Product]

apiServer :: Server UserAPI
apiServer = return products

モジュールの Cabal 定義:

library
  hs-source-dirs:      src
  exposed-modules:     API
  build-depends:       base >= 4.7 && < 5
                     , servant
                     , aeson
  default-language:    Haskell2010

stack/cabal がそれを取得できるように、その依存関係を他にどこで定義する必要があるのか​​ わかりません。

4

1 に答える 1

8

このServantモジュールは、モジュール リストにあるように、 servant-serverから取得れます。この便利なServantモジュールは、servantパッケージ (Web API を記述するためのすべてのタイプを含む) からすべてを再エクスポートするだけでなく、servant Web アプリを実行するための重要なものも再エクスポートします。

簡単に言うと、 servant-serverパッケージも依存関係に追加する必要があります。

于 2015-09-05T16:28:52.427 に答える