我正在尝试为我的Haskell项目设置我的Haskero(使用Intero的Visual Studio代码扩展),但是我收到以下错误:
app\Main.hs:3:1: error:
Failed to load interface for `Lib'
Use -v to see a list of the files searched for.
重现的步骤:
stack new project
cd project
stack build intero
stack exec intero
> :l app/Main.hs
app / Main.hs:
module Main where
import Lib
main :: IO ()
main = someFunc
src / Lib.hs:
module Lib
( someFunc
) where
someFunc :: IO ()
someFunc = putStrLn "someFunc"
答案 0 :(得分:2)
我在Visual Studio Code中遇到过类似的问题。
引擎盖下Haskero正确使用:
stack ghci --with-ghc intero --no-build --no-load
但是Haskero假设堆栈项目是加载到VSCode的工作目录。如果堆栈项目是其中一个子目录,则IDE中会出现相同的错误,因为堆栈命令是从该主目录运行的。至少它是Haskero 1.3.1目前发生的事情。
解决方案是始终确保堆栈项目等于VSCode中的工作目录。
答案 1 :(得分:1)
我没有使用Haskero的经验,但可以在Linux机器上使用普通的旧Intero安装来复制问题。
问题是您通过stack exec
而不是stack ghci
调用Intero后端。如果您尝试使用stack exec ghci
而不是stack ghci
来调用常规的GHC交互式会话,则会遇到同样的问题(有关详细信息,请参阅documentation for stack ghci
)。
而不是stack exec intero
,请尝试:
stack ghci --with-ghc intero --no-build --no-load
它应该可以正常工作。
(请注意,stack exec intero
实际上可以正常工作,如果你首先stack build
你的项目,但仍然应该通过stack ghci
调用交互式会话。)