2017-04-04 43 views
4

我想設置我的Haskero(使用關於Interotube Visual Studio代碼擴展名)爲我的Haskell的項目,但我得到以下錯誤:關於Interotube:無法加載界面庫

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" 
+0

請張貼您的'project.cabal'文件和'stack.yaml'。您可能需要將'project'部分重命名爲'intero'或類似的東西。該錯誤似乎表明無論您的cabal文件中有哪個節「intero」都沒有列出「Lib」。 – Lazersmoke

回答

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被調用。)

2

我有類似的問題,在Visual Studio代碼存在的。

在Haskero正常使用油煙機:

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

然而Haskero假定堆項目是加載到VSCode工作目錄。如果棧項目是其中一個子目錄,那麼在IDE中會出現相同的錯誤,因爲堆棧命令是從該主目錄運行的。至少這是Haskero 1.3.1目前的情況。

解決方案是始終確保堆棧項目等於VSCode中的工作目錄。