尽管堆栈解算器,找不到模块`Test.Hspec'

时间:2015-10-05 22:34:41

标签: haskell dependencies haskell-stack

这是我的stack.yaml文件,声明hspec是一个额外的依赖:

# Specifies the GHC version and set of packages available (e.g., lts-3.5, nightly-2015-09-21, ghc-7.10.2)
resolver: lts-3.8  

# Local packages, usually specified by relative directory name
packages:
- '.'

# Packages to be pulled from upstream that are not in the resolver (e.g., acme-missiles-0.3)
extra-deps:
- hspec-2.2.0

当我运行stack solver时,它表示无法进行任何更改:

root@5d7daa2aec0a:/src/test_stack/a-test/src# stack solver
This command is not guaranteed to give you a perfect build plan
It's possible that even with the changes generated below, you will still need to do some manual tweaking
Asking cabal to calculate a build plan, please wait
No needed changes found

To automatically modify your stack.yaml file, rerun with '--modify-stack-yaml'

这是我的源文件(仅用于检查我是否可以将Hspec与堆栈一起使用):

module Main where

import Test.Hspec


main :: IO ()
main = do
  putStrLn "hello world"

当我运行stack build时,我得到:

2015-10-05 22:24:08.450413:[warn]找不到模块`Test.Hspec'@(stack_Bp003b8iWaELtdr693pSPs:Stack.Build.Execute src / Stack / Build / Execute.hs:1241:35)< / p>

我认为stack solver确保额外的依赖关系正常。

我做错了什么? 这是我第一次使用堆栈。

1 个答案:

答案 0 :(得分:2)

虽然堆栈取代了用于构建和安装软件包的命令行工具cabal-install,但它仍然使用Cabal打包基础结构。特别是,这意味着使用堆栈构建的项目仍然是与.cabal文件兼容的Cabal兼容包,并且所有依赖项都应列在.cabal文件的build-depends部分中,并具有适当的版本范围。即使依赖关系也在stack.yaml文件extra-deps字段中指定,这也成立,因为该字段用于不同的目的(即,在构建程序包时为堆栈提供准确的版本)。