堆栈不会解析“隐藏”依赖项

问题描述 投票:0回答:1

我正在开发我的第一个主要的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 buildstack 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

我认为这是一个愚蠢的构建问题,期待面对我的明显监督。

haskell haskell-stack
1个回答
0
投票

stack.yaml中,您声明了Stackage LTS版本,这是您希望依赖的黑客依赖关系的精选列表。您还可以依赖于本地软件包和git中不在Hackage中的软件包。您也可以更改LTS中软件包的版本,只要它们遵守其他依赖项的约束即可。

package.yaml是构建文件。您想要在Haskell代码中直接导入的任何程序包都必须在此处声明为依赖项,即使它们已在stack.yaml中明确声明。

最后,当您看到It is a member of the hidden package时,意味着您的一个依赖项正在使用该程序包,但在构建文件中未将其声明为依赖项。

© www.soinside.com 2019 - 2024. All rights reserved.