VSCode加载Database.SQLite.Simple失败,HLS与cabal运行正常
解决步骤与调试方向
核心问题分析
你遇到的矛盾点(cabal run正常但VSCode报错),本质是VSCode的Haskell扩展未正确关联项目的cabal构建环境——cabal采用nix-style构建后,依赖包会存放在项目本地的store中,全局ghc-pkg看不到是正常行为,无需纠结这点。
1. 校验cabal文件依赖配置
确保sqlite-simple依赖是写在目标可执行文件的build-depends块中,而非仅在library块:
executable generate-hs main-is: Main.hs build-depends: base >=4.16.4.0, scotty, sqlite-simple >=0.4.18.2 # 必须在这里 hs-source-dirs: app default-language: Haskell2010
执行cabal build exe:generate-hs确认构建无报错,保证依赖已正确下载并编译。
2. 修正hie.yaml配置
hie.yaml无需手动添加依赖,只需正确指定cabal组件。删除你添加的依赖条目,确保配置为:
cradle: cabal: component: "exe:generate-hs"
保存后,在VSCode中执行Ctrl+Shift+P > Haskell: Restart Haskell Language Server。
3. 重置VSCode的HLS会话与缓存
- 执行
Ctrl+Shift+P > Developer: Reload Window,彻底重启VSCode的会话 - 若仍有问题,删除项目根目录下的
.hie文件夹(HLS缓存目录),再重启HLS
4. 检查VSCode扩展的环境路径
在VSCode设置中搜索Haskell: GHC Path和Haskell: Cabal Path,确保指向ghcup安装的版本:
- GHC路径:
~/.ghcup/bin/ghc - Cabal路径:
~/.ghcup/bin/cabal
避免使用系统自带的旧版本GHC/Cabal。
5. 解决textDocument/foldingRange错误
该错误多由HLS的折叠插件异常导致:
- 在VSCode设置中搜索
Haskell: Plugin Preferences,添加配置禁用折叠插件:"haskell.plugin.folding.enable": false - 或升级HLS到对应GHC 9.4的最新版本(当前GHC 9.4对应的HLS最新版为2.6.0.0),通过
ghcup install hls --ghc 9.4.7安装。
6. 放弃全局安装依赖
不要执行cabal install sqlite-simple全局安装依赖,这会干扰cabal的项目本地依赖隔离机制。若已全局安装,可执行ghc-pkg unregister sqlite-simple删除全局包。
内容的提问来源于stack exchange,提问作者uninterestedSwift
相关产品推荐
相关产品推荐

