我正在开发我的第一个主要的Haskell应用程序,并且想添加嘲笑来创建一次性测试WAI线程。导入嘲笑并运行stack test
会导致编译器错误:
Failed to load interface for ‘Test.Mockery.Directory’
It is a member of the hidden package ‘mockery-0.3.5’.
Perhaps you need to add ‘mockery’ to the build-depends in your .cabal file.
Use -v to see a list of the files searched for.
所以,我在测试依赖项下向我的阴谋文件添加了嘲讽。但是,当我运行stack build
或stack test
时,嘲笑会自动从集团文件中删除。
我也尝试过在mockery-0.3.5
文件中的extra-deps
下列出stack.yaml
。毫不奇怪,这是行不通的,因为嘲笑是我的lt的一部分,而额外的部门则是lts之外的包裹。
如何获得堆栈以识别嘲笑应作为对项目的依赖项?
这是我的stack.yaml:
flags: {}
ghc-options:
! '*': -Wall
packages:
- .
extra-deps: [
]
resolver: lts-9.5
我正在使用堆栈版本1.5.1
我认为这是一个愚蠢的构建问题,期待面对我的明显监督。
在stack.yaml
中,您声明了Stackage LTS版本,这是您希望依赖的黑客依赖关系的精选列表。您还可以依赖于本地软件包和git中不在Hackage中的软件包。您也可以更改LTS中软件包的版本,只要它们遵守其他依赖项的约束即可。
package.yaml
是构建文件。您想要在Haskell代码中直接导入的任何程序包都必须在此处声明为依赖项,即使它们已在stack.yaml
中明确声明。
最后,当您看到It is a member of the hidden package
时,意味着您的一个依赖项正在使用该程序包,但在构建文件中未将其声明为依赖项。