通过ghcup配置Haskell VS Code环境遇Stack相关错误求助
解决VS Code Haskell扩展调用Stack报错及Stack依赖旧GHC版本的问题
核心问题分析
- VS Code的Haskell扩展默认会自动检测项目类型,若你的Cabal项目中存在
stack.yaml文件(可能是误生成的),会被识别为Stack项目,进而调用stack setup导致报错。 - Stack尝试使用GHC 8.6.5是因为项目的
stack.yaml中指定的resolver版本对应旧版GHC,而aarch64架构的macOS没有该版本的预编译安装包。
解决方案
一、让VS Code扩展使用Cabal而非Stack(优先处理)
- 打开VS Code设置,搜索
Haskell: Package Manager,将其值改为cabal,强制扩展使用Cabal管理项目,避免调用Stack。 - 检查项目根目录,若存在多余的
stack.yaml文件,直接删除(你一直用Cabal开发,无需该文件),彻底避免扩展误判项目类型。
二、修复Stack的GHC版本问题(若后续需要使用Stack)
如果之后需要用Stack处理该项目,可按以下步骤修复:
- 编辑项目根目录的
stack.yaml文件,将resolver字段更新为支持aarch64 macOS的版本,例如:
或者直接指定你已通过ghcup安装的GHC 9.6.1对应的resolver:resolver: lts-21.25 # 对应GHC 9.4.8,属于支持列表中的版本resolver: nightly-2023-08-01 # 该nightly版本对应GHC 9.6.1 - 保存文件后,执行
stack setup,Stack会自动下载并配置对应版本的GHC。 - 备选方案(不推荐):若必须使用GHC 8.6.5,可执行
stack setup --ghc-build=integer-simple让Stack从源码编译GHC,但编译耗时极长。
内容的提问来源于stack exchange,提问作者Anentropic
相关产品推荐
相关产品推荐

