【问题标题】:Intero : Failed to load interface for LibIntero:无法为 Lib 加载接口
【发布时间】:2017-04-04 19:38:11
【问题描述】:

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

【问题讨论】:

  • 请发布您的project.cabal 文件和stack.yaml。您可能需要将project 部分重命名为intero 或类似名称。该错误似乎表明 intero 在您的 cabal 文件中的任何部分都没有列出 Lib

标签: haskell intero


【解决方案1】:

我在 Visual Studio Code 中遇到了类似的问题。

在后台 Haskero 正确使用:

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

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

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

【讨论】:

    【解决方案2】:

    我没有使用 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 build 您的项目,stack exec intero 实际上可以正常工作,但仍应该通过 stack ghci 调用交互式会话。)

    【讨论】:

      猜你喜欢
      • 2016-10-03
      • 2013-07-28
      • 2013-03-02
      • 1970-01-01
      • 1970-01-01
      • 2021-05-18
      • 2018-08-16
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多