4

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

应用程序/Main.hs:

module Main where

import Lib

main :: IO ()
main = someFunc

src/Lib.hs:

module Lib
   ( someFunc
   ) where

someFunc :: IO ()
someFunc = putStrLn "someFunc"
4

2 回答 2

2

我在 Visual Studio Code 中出现了类似的问题。

在引擎盖下 Haskero 正确使用:

stack ghci --with-ghc intero --no-build --no-load

但是 Haskero 假定堆栈项目是加载到 VSCode 的工作目录。相反,如果 stack 项目是子目录之一,则 IDE 中会出现相同的错误,因为 stack 命令是从该主目录运行的。至少 Haskero 1.3.1 目前是这样。

解决方案是始终确保堆栈项目等于 VSCode 中的工作目录。

于 2017-09-03T23:43:38.027 回答
1

我没有使用 Haskero 的经验,但可以通过在 Linux 机器上安装普通的旧 Intero 来复制问题。

问题是您通过调用 Intero 后端stack exec而不是stack ghci. 如果您尝试使用stack exec ghci而不是stack ghci调用通常的 GHC 交互式会话,您会发现同样的问题(有关更多信息,请参阅文档stack ghci)。

而不是stack exec intero,尝试:

stack ghci --with-ghc intero --no-build --no-load

它应该可以正常工作。

(请注意,stack exec intero如果您stack build首先进行项目,实际上可以正常工作,但仍应该通过 调用交互式会话stack ghci。)

于 2017-04-05T03:25:55.710 回答