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

VS Code中Haskell-language-server启动目录错误的解决方法

解决VS Code中HLS无法识别子目录Haskell项目的问题

问题场景

项目结构如下:

- my-project
  - backend
    - stack.yaml
    - src
      - ... 一堆Haskell文件
    - ... 还有exe和test目录
  - frontend
    - ... Elm前端应用
  - flake.nix
  - ... 其他文件

在项目根目录执行cd my-project && codium .打开VS Code后,查看Haskell文件时出现无法找到包的错误;但进入backend目录执行cd my-project/backend && codium .打开时一切正常。推测是HLS在项目根目录启动,无法正确识别子目录里的Haskell项目。尝试在.vscode/settings.json中添加"haskell.serverExtraArgs": "--cwd /home/theoddler/Dev/my-project/backend",但问题依旧。

解决方案

方法1:修改HLS启动的环境变量

直接修改项目根目录下的.vscode/settings.json,替换之前的配置为以下内容:

{
  "haskell.serverEnvironment": {
    "PWD": "/home/theoddler/Dev/my-project/backend"
  }
}

这个配置会强制HLS以backend目录作为工作路径启动,让它能正确读取stack.yaml和项目依赖信息。

方法2:创建多文件夹工作区

在项目根目录新建一个backend.code-workspace文件,内容如下:

{
  "folders": [
    {
      "path": "backend"
    },
    {
      "path": "frontend"
    }
  ]
}

之后用codium backend.code-workspace打开项目,HLS会自动识别backend目录下的Haskell配置,同时你还能在同一个窗口里操作frontend的文件,不用来回切换窗口。

方法3:用Stack工作区统一配置

如果你的项目适合用Stack的工作区特性,可以在项目根目录新建一个stack.yaml文件,内容指向backend的项目:

packages:
- ./backend

这样HLS在根目录启动时,会通过这个根目录的stack.yaml识别到backend的项目,自动加载对应的依赖和编译配置。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.16 12:25:23