You need to enable JavaScript to run this app. VSCode Haskell扩展无法识别新增函数,无需重启如何解决
优惠活动
大模型
产品
解决方案
定价
更多

VSCode Haskell扩展无法识别新增函数,无需重启如何解决

问题描述

我已安装如下Visual Studio Code Haskell相关扩展:
扩展列表截图
我按如下流程创建了新的stack项目:
执行命令:stack new vscode-red-squiggly-test
随后按要求配置了Lib.hs和Main.hs文件:
初始配置截图
此时执行stack build、stack exec vscode-red-squiggly-test-exe均可正常构建运行。
之后我在Lib.hs中新增了项xyz,并在Main.hs中引用该内容:
修改后代码截图
此时xyz下方出现红色波浪线报错,hover提示如下:
报错提示截图
但此时项目仍然可以正常构建运行,仅当我关闭VSCode、执行stack build后再通过code .重启VSCode,波浪线才会消失。
系统给出的快速修复建议是在文件中添加:
{-# OPTIONS_GHC -Wno-deferred-out-of-scope-variables #-}
但该方案会关闭真实未定义变量的检测功能,我不希望采用。

补充说明

  • 我的Haskell环境运行在Windows的WSL中
  • VSCode实例运行在Windows系统,通过终端执行code .启动

更新

  • 我已在GitHub提交对应Issue

解决方案

不需要重启整个VSCode,以下方法可以直接消除错误提示:

  • 重启Haskell语言服务
    按下Ctrl+Shift+P调出VSCode命令面板,搜索并执行Haskell: Restart Haskell LSP Server,等待10秒左右语言服务重新加载完项目索引,错误提示就会自动消失。
  • 搭配编译刷新索引
    如果重启语言服务后错误还在,先在终端执行一次stack build,再重复重启语言服务的操作即可,全程不需要关闭VSCode。
  • 长期优化配置避免重复出现
    打开VSCode的Haskell扩展设置,开启haskell.plugin.ghcide-completions.config.autoExtendOn选项,后续修改模块导出的绑定项时,语言服务会自动更新索引,不需要手动重启。同时确保你安装的Haskell Language Server版本和项目使用的GHC版本完全匹配,版本不兼容会导致索引更新延迟。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.10 08:00:00