Intero:无法为Lib加载界面

时间:2017-04-04 19:38:11

标签: haskell intero

我正在尝试为我的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"

2 个答案:

答案 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调用交互式会话。)