我通过
ghcup
安装了 Haskell
我已经通过 ghcup 安装了 HLS
我有
ghcup set 9.6.1
我有 VS Code 扩展:https://marketplace.visualstudio.com/items?itemName=haskell.haskell
当我在 VS Code 中打开项目时,出现以下错误:
Failed to find the GHC version of this Stack project. Error when calling stack setup --silent
到目前为止,我一直在 VS Code 之外的终端中使用 Cabal,例如
cabal build
cabal repl
等
我注意到 VS Code 正在尝试使用
stack
...如果我尝试在终端中使用 Stack,我会收到如下错误:
$ stack build
Error: [S-9443]
No setup information found for ghc-8.6.5 on your platform.
This probably means a GHC bindist has not yet been added for OS key 'macosx-aarch64'.
Supported versions: ghc-8.10.5, ghc-8.10.6, ghc-8.10.7, ghc-9.0.2, ghc-9.2.1, ghc-9.2.2, ghc-9.2.3, ghc-9.2.4, ghc-9.2.5, ghc-9.2.6, ghc-9.2.7, ghc-9.4.1, ghc-9.4.2, ghc-9.4.3, ghc-9.4.4, ghc-9.6.1
我不知道为什么 Stack 要使用 GHC 8.6.5,或者这是否与 VS Code 扩展遇到的问题有关
不知道到底要做什么,说明很简单 https://www.haskell.org/ghcup/install/#vscode-integration
此处更详细讨论问题:https://github.com/haskell/vscode-haskell/issues/841
本质上我遇到了一系列问题,有些是因为我试图打开的项目很旧,有些是因为我仍在寻找 ghcup 工具链的方法:
ghcup
安装,因此需要一些配置调整.cabal
和 stack.yaml
文件stack.yaml
...这代表“堆栈快照”版本。我不完全确定那是什么,我认为这是我在其他语言中使用的包管理器中不存在的概念。我认为这是一组冻结的软件包版本,在这种情况下太旧了,它们只与旧的 GHC 8.6.5 版本兼容,因此无法与我当前尝试使用的 GHC 9.x 一起使用,从而导致错误 - VS代码扩展试图使用它来安装依赖项我已经通过 resolver: lts-14.4
就我而言,我刚刚删除了
ghcup
stack.yaml
并且还定义了:
resolver
这似乎阻止 VS Code 安装任何依赖项。
packages:
- '.'
似乎没有做任何有用的事情。调整了一些依赖版本(从 stack.yaml
build-depends: base >=4.0 && <4.13
这是基于我之前在终端中忽略的建议:
ghcup set ghc
$ ghcup set 9.6.1
[ Warn ] This is an old-style command for setting GHC. Use 'ghcup set ghc' instead.
"haskell.manageHLS": "GHCup"
,不确定是否需要。此更改后的语言服务器开始在 Haskell hls 插件的 intellij 环境中工作。
所有其他解决方案都不适合我。我没有解释为什么会出现这种情况。