Haskero初始化失败报“Not a valid Unicode code point!”问题求助
解决Haskero初始化失败与GHC包缓存编码错误问题
看起来你碰到的是GHC包缓存的编码兼容性问题,结合Haskero+Intero的场景,这个问题确实和区域设置、GHC与Intero版本匹配度有关,下面是几个经过验证的修复方案:
1. 修正系统区域设置为UTF-8
这个错误最常见的原因是系统默认区域编码不是UTF-8,导致GHC解析包缓存时出现Unicode解码失败。
- 先检查当前的区域设置:
echo $LC_ALL $LANG - 如果输出不是类似
en_US.UTF-8的UTF-8编码,临时设置环境变量:export LC_ALL=en_US.UTF-8 export LANG=en_US.UTF-8 - 设置后重新运行报错里的
stack ghci命令,看看是否能正常启动Intero。如果有效,把这两行添加到你的~/.bashrc或~/.zshrc文件中,确保永久生效。
2. 删除损坏的GHC包缓存并重建
你的错误提示指向了一个损坏的包缓存文件,直接清理它再重建:
- 删除指定的缓存文件:
rm /home/joey/.stack/programs/x86_64-linux/ghc-8.2.2/lib/ghc-8.2.2/package.conf.d/package.cache - 运行
stack setup让Stack重新生成干净的包缓存:stack setup
3. 确保Intero与GHC版本匹配
从报错信息看,Intero使用的是GHC 8.0.2,但你的Stack环境用的是GHC 8.2.2,版本不匹配可能引发兼容性问题:
- 打开VSCode的设置(快捷键
Ctrl+,),搜索haskero.stackArgs,添加以下配置:
(lts-9.21对应GHC 8.0.2,和Intero显示的版本一致)"haskero.stackArgs": ["--resolver", "lts-9.21"] - 或者直接在你的项目根目录的
stack.yaml文件中,把resolver字段改为lts-9.21,这样Haskero会自动使用匹配的GHC版本。
4. 更新Stack与Intero到最新版本
旧版本的Stack或Intero可能存在已知的编码兼容性bug,更新到最新版试试:
- 更新Stack:
stack upgrade - 在你的项目目录下更新Intero:
stack install intero
补充说明
这个问题是Haskero用户碰到的常见问题之一,核心是GHC对非UTF-8区域设置的兼容性较差,加上Intero与GHC版本不匹配时容易触发包缓存解析错误。按照上面的步骤逐一排查,基本能解决问题。
内容的提问来源于stack exchange,提问作者Joey Eremondi
相关产品推荐
相关产品推荐

