You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用stack new创建的GHC 9.0.2项目为何导致语言服务器崩溃?

解决Stack项目中Haskell语言服务器(HLS)因GHC ABI不匹配崩溃的问题

问题本质

核心矛盾是Stack项目指定的GHC版本与本地已安装版本不兼容:

  • 你通过GHCup默认安装了GHC 8.10.7,但stack new生成的项目使用的LTS 19.16解析器对应GHC 9.0.2
  • HLS需要与项目依赖的GHC版本严格匹配,版本不一致会直接触发ABI(应用二进制接口)冲突,导致崩溃

可行解决方案

方案1:修改Stack项目适配本地GHC版本

  1. 打开项目根目录的stack.yaml文件
  2. 将resolver字段替换为适配GHC 8.10.7的LTS解析器(比如LTS 18.x系列,对应GHC 8.10.7),例如:
    resolver: lts-18.28
    
    或者直接指定本地已安装的GHC版本:
    resolver: ghc-8.10.7
    
  3. 执行stack build同步依赖,重启HLS即可正常运行

方案2:安装Stack项目所需的GHC 9.0.2

若想保留默认的LTS 19.16解析器,可安装对应GHC版本:

  1. 使用GHCup安装GHC 9.0.2:
    ghcup install ghc 9.0.2
    
  2. (可选)切换默认GHC版本到9.0.2:
    ghcup set ghc 9.0.2
    
  3. 你的HLS v1.7.0.0支持GHC 9.0.x,无需升级,执行stack build后重启HLS即可

方案3:让Stack自动管理GHC版本

Stack自带GHC版本管理能力,直接在项目根目录执行:

stack build

Stack会自动下载并安装解析器指定的GHC 9.0.2,完成后HLS即可识别并正常启动

额外提示

  • HLS与GHC存在严格的版本对应关系,安装HLS时可通过ghcup install hls --ghc <版本号>指定适配的GHC版本,避免冲突
  • 用stack ghc -- --version可查看当前Stack项目使用的GHC版本,确认与HLS适配

内容的提问来源于stack exchange,提问作者thisisrandy

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.25 17:48:08