Windows10下用servant模板创建Stack项目build时因mintty报错如何解决?
报错根本原因
- LTS 18.16 到 18.17 的 Stackage 快照更新中,
mintty包版本从 v0.1.2 升级到了 v0.1.3,该版本将 Win32 平台相关的实现拆分为独立的mintty-win32依赖包,但 LTS 18.17 快照未收录这个新增依赖,导致构建mintty时找不到对应模块。 - 你的项目间接依赖
mintty:servant 依赖的底层终端适配库(如ansi-terminal)在 Windows 平台下会自动引入mintty作为可选依赖,用于检测终端类型、适配彩色输出等功能,并非你的项目直接声明依赖。
新版resolver下的解决方法
以下方案均无需降级resolver版本:
- 方案1:手动补全缺失依赖
在stack.yaml的extra-deps字段添加缺失的mintty-win32包即可,配置示例:
resolver: url: https://raw.githubusercontent.com/commercialhaskell/stackage-snapshots/master/lts/18/17.yaml extra-deps: - mintty-win32-0.1.0.0
修改后重新执行 stack build 即可正常构建。
- 方案2:关闭mintty的Win32功能
如果你不需要终端类型检测功能,可以在stack.yaml中通过编译标记禁用该依赖,配置示例:
resolver: url: https://raw.githubusercontent.com/commercialhaskell/stackage-snapshots/master/lts/18/17.yaml flags: mintty: win32: false
- 方案3:升级到更高版本的LTS快照
该问题为LTS 18.17的独有快照缺陷,后续的LTS 18.18及更高版本已经修复了mintty-win32缺失的问题,直接将resolver切换到更新的LTS版本即可原生解决。
内容的提问来源于stack exchange,提问作者vijaicv
相关产品推荐
相关产品推荐

